Mercurial > minori
view src/gui/pages/now_playing.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 | 4d461ef7d424 |
children | b82841e76e79 |
line wrap: on
line source
#include "gui/pages/now_playing.h" #include "core/anime_db.h" #include "core/strings.h" #include "gui/widgets/anime_info.h" #include "gui/widgets/poster.h" #include "gui/widgets/text.h" #include <QHBoxLayout> #include <QLabel> #include <QStackedWidget> #include <QVBoxLayout> #include <QWidget> #include "anitomy/anitomy.h" namespace NowPlayingPages { Default::Default(QWidget* parent) : QWidget(parent) { QVBoxLayout* layout = new QVBoxLayout(this); layout->setContentsMargins(0, 0, 0, 0); TextWidgets::Title* title = new TextWidgets::Title(tr("Now Playing"), this); layout->addWidget(title); layout->addStretch(); } Playing::Playing(QWidget* parent) : QWidget(parent) { QHBoxLayout* layout = new QHBoxLayout(this); _main.reset(new QWidget(this)); _main->setSizePolicy(QSizePolicy::Preferred, QSizePolicy::Expanding); QVBoxLayout* main_layout = new QVBoxLayout(_main.get()); main_layout->setContentsMargins(0, 0, 0, 0); _title.reset(new TextWidgets::Title("", _main.get())); main_layout->addWidget(_title.get()); _info.reset(new AnimeInfoWidget(_main.get())); _info->setSizePolicy(QSizePolicy::Preferred, QSizePolicy::Expanding); _info->layout()->setContentsMargins(0, 0, 0, 0); main_layout->addWidget(_info.get()); /* "sidebar", includes... just the anime image :) */ _sidebar.reset(new QWidget(this)); QVBoxLayout* sidebar_layout = new QVBoxLayout(_sidebar.get()); sidebar_layout->setContentsMargins(0, 0, 0, 0); _poster.reset(new Poster(_sidebar.get())); sidebar_layout->addWidget(_poster.get()); sidebar_layout->addStretch(); layout->addWidget(_sidebar.get()); layout->addWidget(_main.get()); layout->setSpacing(10); layout->setContentsMargins(0, 0, 0, 0); } int Playing::GetPlayingAnime() { return _id; } void Playing::SetPlayingAnime(const Anime::Anime& anime, const anitomy::Elements& info) { if (_id == anime.GetId() && _episode == Strings::ToInt(Strings::ToUtf8String(info.get(anitomy::kElementEpisodeNumber)))) return; _id = anime.GetId(); _episode = Strings::ToInt(Strings::ToUtf8String(info.get(anitomy::kElementEpisodeNumber))); _title->SetText(Strings::ToQString(anime.GetUserPreferredTitle())); _info->SetAnime(anime); _poster->SetAnime(anime); updateGeometry(); } } // namespace NowPlayingPages NowPlayingPage::NowPlayingPage(QWidget* parent) : QFrame(parent) { QVBoxLayout* layout = new QVBoxLayout(this); setFrameShape(QFrame::Box); setFrameShadow(QFrame::Sunken); setAutoFillBackground(true); stack = new QStackedWidget(this); stack->addWidget(new NowPlayingPages::Default(stack)); stack->addWidget(new NowPlayingPages::Playing(stack)); layout->addWidget(stack); SetDefault(); } void NowPlayingPage::SetDefault() { stack->setCurrentIndex(0); } int NowPlayingPage::GetPlayingId() { return reinterpret_cast<NowPlayingPages::Playing*>(stack->widget(1))->GetPlayingAnime(); } void NowPlayingPage::SetPlaying(const Anime::Anime& anime, const anitomy::Elements& info) { reinterpret_cast<NowPlayingPages::Playing*>(stack->widget(1))->SetPlayingAnime(anime, info); stack->setCurrentIndex(1); updateGeometry(); }