Mercurial > minori
annotate src/core/anime_season.cc @ 399:a0bc3ae5164a
anime_list: actually obey "highlight anime if they are available"
| author | Paper <paper@tflc.us> |
|---|---|
| date | Fri, 07 Nov 2025 15:28:22 -0500 |
| parents | 963047512d34 |
| children |
| rev | line source |
|---|---|
| 281 | 1 #include "core/anime_season.h" |
|
327
b5d6c27c308f
anime: refactor Anime::SeriesSeason to Season class
Paper <paper@paper.us.eu.org>
parents:
326
diff
changeset
|
2 #include "core/session.h" |
| 281 | 3 |
| 4 namespace Anime { | |
| 5 | |
| 369 | 6 static bool WinterStartsInDecember() |
| 7 { | |
|
327
b5d6c27c308f
anime: refactor Anime::SeriesSeason to Season class
Paper <paper@paper.us.eu.org>
parents:
326
diff
changeset
|
8 switch (session.config.service) { |
| 393 | 9 case Service::MyAnimeList: |
| 10 return false; | |
| 11 default: | |
| 12 return true; | |
|
327
b5d6c27c308f
anime: refactor Anime::SeriesSeason to Season class
Paper <paper@paper.us.eu.org>
parents:
326
diff
changeset
|
13 } |
|
b5d6c27c308f
anime: refactor Anime::SeriesSeason to Season class
Paper <paper@paper.us.eu.org>
parents:
326
diff
changeset
|
14 } |
|
b5d6c27c308f
anime: refactor Anime::SeriesSeason to Season class
Paper <paper@paper.us.eu.org>
parents:
326
diff
changeset
|
15 |
| 369 | 16 static Season::Name GetSeasonForMonth(Date::Month month) |
| 17 { | |
|
327
b5d6c27c308f
anime: refactor Anime::SeriesSeason to Season class
Paper <paper@paper.us.eu.org>
parents:
326
diff
changeset
|
18 if (WinterStartsInDecember()) { |
|
b5d6c27c308f
anime: refactor Anime::SeriesSeason to Season class
Paper <paper@paper.us.eu.org>
parents:
326
diff
changeset
|
19 switch (month) { |
| 393 | 20 case Date::Month::Dec: |
| 21 case Date::Month::Jan: | |
| 22 case Date::Month::Feb: | |
| 23 return Season::Name::Winter; | |
| 24 case Date::Month::Mar: | |
| 25 case Date::Month::Apr: | |
| 26 case Date::Month::May: | |
| 27 return Season::Name::Spring; | |
| 28 case Date::Month::Jun: | |
| 29 case Date::Month::Jul: | |
| 30 case Date::Month::Aug: | |
| 31 return Season::Name::Summer; | |
| 32 case Date::Month::Sep: | |
| 33 case Date::Month::Oct: | |
| 34 case Date::Month::Nov: | |
| 35 return Season::Name::Autumn; | |
| 36 default: | |
| 37 return Season::Name::Unknown; | |
|
327
b5d6c27c308f
anime: refactor Anime::SeriesSeason to Season class
Paper <paper@paper.us.eu.org>
parents:
326
diff
changeset
|
38 } |
|
b5d6c27c308f
anime: refactor Anime::SeriesSeason to Season class
Paper <paper@paper.us.eu.org>
parents:
326
diff
changeset
|
39 } else { |
|
b5d6c27c308f
anime: refactor Anime::SeriesSeason to Season class
Paper <paper@paper.us.eu.org>
parents:
326
diff
changeset
|
40 switch (month) { |
| 393 | 41 case Date::Month::Jan: |
| 42 case Date::Month::Feb: | |
| 43 case Date::Month::Mar: | |
| 44 return Season::Name::Winter; | |
| 45 case Date::Month::Apr: | |
| 46 case Date::Month::May: | |
| 47 case Date::Month::Jun: | |
| 48 return Season::Name::Spring; | |
| 49 case Date::Month::Jul: | |
| 50 case Date::Month::Aug: | |
| 51 case Date::Month::Sep: | |
| 52 return Season::Name::Summer; | |
| 53 case Date::Month::Oct: | |
| 54 case Date::Month::Nov: | |
| 55 case Date::Month::Dec: | |
| 56 return Season::Name::Autumn; | |
| 57 default: | |
| 58 return Season::Name::Unknown; | |
|
327
b5d6c27c308f
anime: refactor Anime::SeriesSeason to Season class
Paper <paper@paper.us.eu.org>
parents:
326
diff
changeset
|
59 } |
| 281 | 60 } |
| 61 } | |
| 62 | |
| 369 | 63 Season::Season(Season::Name s, Date::Year y) |
| 64 { | |
|
327
b5d6c27c308f
anime: refactor Anime::SeriesSeason to Season class
Paper <paper@paper.us.eu.org>
parents:
326
diff
changeset
|
65 season = s; |
|
b5d6c27c308f
anime: refactor Anime::SeriesSeason to Season class
Paper <paper@paper.us.eu.org>
parents:
326
diff
changeset
|
66 year = y; |
| 281 | 67 } |
|
327
b5d6c27c308f
anime: refactor Anime::SeriesSeason to Season class
Paper <paper@paper.us.eu.org>
parents:
326
diff
changeset
|
68 |
| 369 | 69 Season::Season(const Date &date) |
| 70 { | |
|
327
b5d6c27c308f
anime: refactor Anime::SeriesSeason to Season class
Paper <paper@paper.us.eu.org>
parents:
326
diff
changeset
|
71 std::optional<Date::Month> month = date.GetMonth(); |
|
b5d6c27c308f
anime: refactor Anime::SeriesSeason to Season class
Paper <paper@paper.us.eu.org>
parents:
326
diff
changeset
|
72 if (month) |
|
b5d6c27c308f
anime: refactor Anime::SeriesSeason to Season class
Paper <paper@paper.us.eu.org>
parents:
326
diff
changeset
|
73 season = GetSeasonForMonth(month.value()); |
|
b5d6c27c308f
anime: refactor Anime::SeriesSeason to Season class
Paper <paper@paper.us.eu.org>
parents:
326
diff
changeset
|
74 |
|
b5d6c27c308f
anime: refactor Anime::SeriesSeason to Season class
Paper <paper@paper.us.eu.org>
parents:
326
diff
changeset
|
75 std::optional<Date::Year> y = date.GetYear(); |
|
b5d6c27c308f
anime: refactor Anime::SeriesSeason to Season class
Paper <paper@paper.us.eu.org>
parents:
326
diff
changeset
|
76 if (y) |
|
b5d6c27c308f
anime: refactor Anime::SeriesSeason to Season class
Paper <paper@paper.us.eu.org>
parents:
326
diff
changeset
|
77 year = y.value(); |
|
b5d6c27c308f
anime: refactor Anime::SeriesSeason to Season class
Paper <paper@paper.us.eu.org>
parents:
326
diff
changeset
|
78 } |
|
b5d6c27c308f
anime: refactor Anime::SeriesSeason to Season class
Paper <paper@paper.us.eu.org>
parents:
326
diff
changeset
|
79 |
| 369 | 80 bool Season::operator==(const Season &o) const |
| 81 { | |
|
327
b5d6c27c308f
anime: refactor Anime::SeriesSeason to Season class
Paper <paper@paper.us.eu.org>
parents:
326
diff
changeset
|
82 return (season == o.season && year == o.year); |
|
b5d6c27c308f
anime: refactor Anime::SeriesSeason to Season class
Paper <paper@paper.us.eu.org>
parents:
326
diff
changeset
|
83 } |
|
b5d6c27c308f
anime: refactor Anime::SeriesSeason to Season class
Paper <paper@paper.us.eu.org>
parents:
326
diff
changeset
|
84 |
| 369 | 85 bool Season::operator!=(const Season &o) const |
| 86 { | |
|
327
b5d6c27c308f
anime: refactor Anime::SeriesSeason to Season class
Paper <paper@paper.us.eu.org>
parents:
326
diff
changeset
|
87 return !(*this == o); |
|
b5d6c27c308f
anime: refactor Anime::SeriesSeason to Season class
Paper <paper@paper.us.eu.org>
parents:
326
diff
changeset
|
88 } |
|
b5d6c27c308f
anime: refactor Anime::SeriesSeason to Season class
Paper <paper@paper.us.eu.org>
parents:
326
diff
changeset
|
89 |
| 369 | 90 bool Season::operator<(const Season &o) const |
| 91 { | |
|
327
b5d6c27c308f
anime: refactor Anime::SeriesSeason to Season class
Paper <paper@paper.us.eu.org>
parents:
326
diff
changeset
|
92 return std::tie(season, year) < std::tie(o.season, o.year); |
|
b5d6c27c308f
anime: refactor Anime::SeriesSeason to Season class
Paper <paper@paper.us.eu.org>
parents:
326
diff
changeset
|
93 } |
|
b5d6c27c308f
anime: refactor Anime::SeriesSeason to Season class
Paper <paper@paper.us.eu.org>
parents:
326
diff
changeset
|
94 |
| 369 | 95 bool Season::operator>(const Season &o) const |
| 96 { | |
|
327
b5d6c27c308f
anime: refactor Anime::SeriesSeason to Season class
Paper <paper@paper.us.eu.org>
parents:
326
diff
changeset
|
97 return (o < *this); |
|
b5d6c27c308f
anime: refactor Anime::SeriesSeason to Season class
Paper <paper@paper.us.eu.org>
parents:
326
diff
changeset
|
98 } |
|
b5d6c27c308f
anime: refactor Anime::SeriesSeason to Season class
Paper <paper@paper.us.eu.org>
parents:
326
diff
changeset
|
99 |
| 369 | 100 bool Season::operator<=(const Season &o) const |
| 101 { | |
|
327
b5d6c27c308f
anime: refactor Anime::SeriesSeason to Season class
Paper <paper@paper.us.eu.org>
parents:
326
diff
changeset
|
102 return !(o > *this); |
|
b5d6c27c308f
anime: refactor Anime::SeriesSeason to Season class
Paper <paper@paper.us.eu.org>
parents:
326
diff
changeset
|
103 } |
|
b5d6c27c308f
anime: refactor Anime::SeriesSeason to Season class
Paper <paper@paper.us.eu.org>
parents:
326
diff
changeset
|
104 |
| 369 | 105 bool Season::operator>=(const Season &o) const |
| 106 { | |
|
327
b5d6c27c308f
anime: refactor Anime::SeriesSeason to Season class
Paper <paper@paper.us.eu.org>
parents:
326
diff
changeset
|
107 return !(*this < o); |
|
b5d6c27c308f
anime: refactor Anime::SeriesSeason to Season class
Paper <paper@paper.us.eu.org>
parents:
326
diff
changeset
|
108 } |
|
b5d6c27c308f
anime: refactor Anime::SeriesSeason to Season class
Paper <paper@paper.us.eu.org>
parents:
326
diff
changeset
|
109 |
| 369 | 110 Season &Season::operator++() |
| 111 { | |
|
348
6b0768158dcd
text: redesign almost every widget
Paper <paper@paper.us.eu.org>
parents:
327
diff
changeset
|
112 switch (season) { |
| 393 | 113 case Season::Name::Winter: |
| 114 season = Season::Name::Spring; | |
| 115 break; | |
| 116 case Season::Name::Spring: | |
| 117 season = Season::Name::Summer; | |
| 118 break; | |
| 119 case Season::Name::Summer: | |
| 120 season = Season::Name::Autumn; | |
| 121 break; | |
| 122 case Season::Name::Autumn: | |
| 123 season = Season::Name::Winter; | |
| 124 year++; | |
| 125 break; | |
| 126 default: | |
| 127 season = Season::Name::Unknown; | |
| 128 break; | |
|
348
6b0768158dcd
text: redesign almost every widget
Paper <paper@paper.us.eu.org>
parents:
327
diff
changeset
|
129 } |
|
6b0768158dcd
text: redesign almost every widget
Paper <paper@paper.us.eu.org>
parents:
327
diff
changeset
|
130 |
|
6b0768158dcd
text: redesign almost every widget
Paper <paper@paper.us.eu.org>
parents:
327
diff
changeset
|
131 return *this; |
|
327
b5d6c27c308f
anime: refactor Anime::SeriesSeason to Season class
Paper <paper@paper.us.eu.org>
parents:
326
diff
changeset
|
132 } |
|
348
6b0768158dcd
text: redesign almost every widget
Paper <paper@paper.us.eu.org>
parents:
327
diff
changeset
|
133 |
| 369 | 134 Season &Season::operator--() |
| 135 { | |
|
348
6b0768158dcd
text: redesign almost every widget
Paper <paper@paper.us.eu.org>
parents:
327
diff
changeset
|
136 switch (season) { |
| 393 | 137 case Season::Name::Winter: |
| 138 season = Season::Name::Autumn; | |
| 139 year--; | |
| 140 break; | |
| 141 case Season::Name::Spring: | |
| 142 season = Season::Name::Winter; | |
| 143 break; | |
| 144 case Season::Name::Summer: | |
| 145 season = Season::Name::Spring; | |
| 146 break; | |
| 147 case Season::Name::Autumn: | |
| 148 season = Season::Name::Summer; | |
| 149 break; | |
| 150 default: | |
| 151 season = Season::Name::Unknown; | |
| 152 break; | |
|
348
6b0768158dcd
text: redesign almost every widget
Paper <paper@paper.us.eu.org>
parents:
327
diff
changeset
|
153 } |
|
6b0768158dcd
text: redesign almost every widget
Paper <paper@paper.us.eu.org>
parents:
327
diff
changeset
|
154 |
|
6b0768158dcd
text: redesign almost every widget
Paper <paper@paper.us.eu.org>
parents:
327
diff
changeset
|
155 return *this; |
|
6b0768158dcd
text: redesign almost every widget
Paper <paper@paper.us.eu.org>
parents:
327
diff
changeset
|
156 } |
|
6b0768158dcd
text: redesign almost every widget
Paper <paper@paper.us.eu.org>
parents:
327
diff
changeset
|
157 |
| 369 | 158 } // namespace Anime |
