view src/gui/widgets/anime_info.cc @ 258:862d0d8619f6

*: HUUUGE changes animia has been renamed to animone, so instead of thinking of a health condition, you think of a beautiful flower :) I've also edited some of the code for animone, but I have no idea if it even works or not because I don't have a mac or windows machine lying around. whoops! ... anyway, all of the changes divergent from Anisthesia are now licensed under BSD. it's possible that I could even rewrite most of the code to where I don't even have to keep the MIT license, but that's thinking too far into the future I've been slacking off on implementing the anime seasons page, mostly out of laziness. I think I'd have to create another db file specifically for the seasons anyway, this code is being pushed *primarily* because the hard drive it's on is failing! yay :)
author Paper <paper@paper.us.eu.org>
date Mon, 01 Apr 2024 02:43:44 -0400
parents b3549da699a6
children 9a88e1725fd2
line wrap: on
line source

#include "gui/widgets/anime_info.h"
#include "core/anime.h"
#include "core/strings.h"
#include "gui/translate/anime.h"
#include "gui/widgets/text.h"
#include <QHBoxLayout>
#include <QTextStream>

AnimeInfoWidget::AnimeInfoWidget(QWidget* parent) : QWidget(parent) {
	QVBoxLayout* layout = new QVBoxLayout(this);

	_title.reset(new TextWidgets::OneLineSection(tr("Alternative titles"), "", this));
	layout->addWidget(_title.get());

	_details.reset(new TextWidgets::LabelledSection(
	    tr("Details"), tr("Type:\nEpisodes:\nStatus:\nSeason:\nGenres:\nScore:"), "", this));
	layout->addWidget(_details.get());

	_synopsis.reset(new TextWidgets::SelectableSection(tr("Synopsis"), "", this));
	_synopsis->GetParagraph()->setSizePolicy(QSizePolicy::Preferred, QSizePolicy::Minimum);
	layout->addWidget(_synopsis.get());

	layout->addStretch();
}

AnimeInfoWidget::AnimeInfoWidget(const Anime::Anime& anime, QWidget* parent) : AnimeInfoWidget(parent) {
	SetAnime(anime);
}

void AnimeInfoWidget::SetAnime(const Anime::Anime& anime) {
	/* alt titles */
	_title->GetLine()->SetText(Strings::ToQString(Strings::Implode(anime.GetTitleSynonyms(), ", ")));

	/* details */
	QString details_data;
	QTextStream details_data_s(&details_data);
	/* we have to convert ALL of these strings to
	 * QString because QTextStream sucks and assumes
	 * Latin1 (on Windows?)
	 */
	const auto genres = anime.GetGenres();
	details_data_s << Strings::ToQString(Translate::ToLocalString(anime.GetFormat())) << "\n"
	               << anime.GetEpisodes() << "\n"
	               << Strings::ToQString(Translate::ToLocalString(anime.GetAiringStatus())) << "\n"
	               << Strings::ToQString(Translate::ToLocalString(anime.GetSeason())) << " "
	               << anime.GetAirDate().GetYear().value_or(2000) << "\n"
	               << Strings::ToQString((genres.size() > 1) ? Strings::Implode(genres, ", ") : "-") << "\n"
	               << anime.GetAudienceScore() << "%";
	_details->GetParagraph()->SetText(details_data);

	_synopsis->GetParagraph()->SetText(Strings::ToQString(anime.GetSynopsis()));

	updateGeometry();
}