diff src/gui/widgets/anime_button.cc @ 348:6b0768158dcd

text: redesign almost every widget i.e. Paragraph is now a QLabel, etc etc, some things will probably break, idc
author Paper <paper@paper.us.eu.org>
date Tue, 25 Jun 2024 11:19:54 -0400
parents 5d3c9b31aa6e
children f81bed4e04ac
line wrap: on
line diff
--- a/src/gui/widgets/anime_button.cc	Sun Jun 23 10:32:09 2024 -0400
+++ b/src/gui/widgets/anime_button.cc	Tue Jun 25 11:19:54 2024 -0400
@@ -12,6 +12,8 @@
 #include <QVBoxLayout>
 #include <QWidget>
 
+#include <iostream>
+
 /* This widget is only used on the Seasons page. */
 
 /***********************************\
@@ -26,19 +28,27 @@
 *|_________| Synopsis               *
 \***********************************/
 
-AnimeButton::AnimeButton(QWidget* parent)
-	: QFrame(parent)
-	, _info(tr("Aired:\nEpisodes:\nGenres:\nProducers:\nScore:\nPopularity:"), "\n\n\n\n\n", nullptr)
-	, _synopsis("", nullptr) {
+AnimeButton::AnimeButton(QWidget* parent) : QFrame(parent) {
 	setFrameShadow(QFrame::Plain);
 	setFrameShape(QFrame::Box);
+
 	QHBoxLayout* ly = new QHBoxLayout(this);
 
-	/* XXX does Qt have a "fixed ratio"? */
+	_poster.SetClickable(false);
 	_poster.setFixedSize(120, 170);
-	_poster.SetClickable(false);
 	ly->addWidget(&_poster, 0, Qt::AlignTop);
 
+	const std::vector<std::pair<std::string, std::string>> imap = {
+		{Strings::Translate("Aired:"), ""},
+		{Strings::Translate("Episodes:"), ""},
+		{Strings::Translate("Genres:"), ""},
+		{Strings::Translate("Producers:"), ""},
+		{Strings::Translate("Score:"), ""},
+		{Strings::Translate("Popularity:"), ""},
+	};
+
+	_info.SetData(imap);
+
 	{
 		QWidget* misc_section = new QWidget(this);
 		misc_section->setFixedSize(354, 180);
@@ -56,11 +66,7 @@
 		}
 		misc_layout->addWidget(&_title);
 
-		{
-			QFont fnt(_info.GetLabels()->font());
-			fnt.setWeight(QFont::Bold);
-			_info.GetLabels()->setFont(fnt);
-		}
+		_info.SetStyle(TextWidgets::LabelledParagraph::Style::BoldedLabels);
 
 		_info.setContentsMargins(4, 0, 4, 0);
 		_info.setSizePolicy(QSizePolicy::Preferred, QSizePolicy::Minimum);
@@ -74,6 +80,7 @@
 			dummy_layout->setContentsMargins(0, 0, 0, 0);
 
 			_synopsis.setSizePolicy(QSizePolicy::Preferred, QSizePolicy::Expanding);
+			_synopsis.SetSelectable(false);
 			dummy_layout->addWidget(&_synopsis);
 			misc_layout->addWidget(dummy);
 		}
@@ -90,13 +97,18 @@
 	_poster.SetAnime(anime);
 	_title.setText(Strings::ToQString(anime.GetUserPreferredTitle()));
 
-	{
-		const QLocale& locale = session.config.locale.GetLocale();
-		_info.GetData()->setText(locale.toString(anime.GetStartedDate().GetAsQDate(), "dd MMM yyyy") + "\n" +
-		                         QString::number(anime.GetEpisodes()) + "\n" +
-		                         Strings::ToQString(Strings::Implode(anime.GetGenres(), ", ")) + "\n" + "...\n" +
-		                         QString::number(anime.GetAudienceScore()) + "%\n" + "...");
-	}
+	const QLocale& locale = session.config.locale.GetLocale();
 
-	_synopsis.SetText(Strings::ToQString(anime.GetSynopsis()));
+	const std::vector<std::pair<std::string, std::string>> imap = {
+		{Strings::Translate("Aired:"), Strings::ToUtf8String(locale.toString(anime.GetStartedDate().GetAsQDate(), "dd MMM yyyy"))},
+		{Strings::Translate("Episodes:"), Strings::ToUtf8String(anime.GetEpisodes())},
+		{Strings::Translate("Genres:"), Strings::Implode(anime.GetGenres(), ", ")},
+		{Strings::Translate("Producers:"), "..."},
+		{Strings::Translate("Score:"), Strings::ToUtf8String(anime.GetAudienceScore()) + "%"},
+		{Strings::Translate("Popularity:"), "..."},
+	};
+
+	_info.SetData(imap);
+
+	_synopsis.SetText(anime.GetSynopsis());
 }