Mercurial > minori
comparison src/gui/widgets/poster.cc @ 83:d02fdf1d6708
*: huuuge update
1. make the now playing page function correctly
2. de-constructorfy many of our custom widgets,
allowing them to be changed on-the-fly from
the Now Playing page
3. ... :)
| author | Paper <mrpapersonic@gmail.com> |
|---|---|
| date | Tue, 24 Oct 2023 22:01:02 -0400 |
| parents | 9b2b41f83a5e |
| children | 9613d72b097e |
comparison
equal
deleted
inserted
replaced
| 82:8b65c417c225 | 83:d02fdf1d6708 |
|---|---|
| 14 #include <QPixmap> | 14 #include <QPixmap> |
| 15 #include <QThreadPool> | 15 #include <QThreadPool> |
| 16 #include <QUrl> | 16 #include <QUrl> |
| 17 #include <curl/curl.h> | 17 #include <curl/curl.h> |
| 18 | 18 |
| 19 Poster::Poster(int id, QWidget* parent) : QFrame(parent) { | 19 Poster::Poster(QWidget* parent) : QFrame(parent) { |
| 20 QHBoxLayout* layout = new QHBoxLayout(this); | 20 QHBoxLayout* layout = new QHBoxLayout(this); |
| 21 layout->setContentsMargins(1, 1, 1, 1); | 21 layout->setContentsMargins(1, 1, 1, 1); |
| 22 | 22 |
| 23 setCursor(Qt::PointingHandCursor); | 23 setCursor(Qt::PointingHandCursor); |
| 24 setFixedSize(150, 225); | 24 setFixedSize(150, 225); |
| 25 setFrameShape(QFrame::Box); | 25 setFrameShape(QFrame::Box); |
| 26 setFrameShadow(QFrame::Plain); | 26 setFrameShadow(QFrame::Plain); |
| 27 | 27 |
| 28 const Anime::Anime& anime = Anime::db.items[id]; | 28 label = new ClickableLabel(this); |
| 29 label->setAlignment(Qt::AlignCenter); | |
| 30 layout->addWidget(label); | |
| 31 } | |
| 29 | 32 |
| 33 Poster::Poster(const Anime::Anime& anime, QWidget* parent) : Poster(parent) { | |
| 34 SetAnime(anime); | |
| 35 } | |
| 36 | |
| 37 void Poster::SetAnime(const Anime::Anime& anime) { | |
| 30 QThreadPool::globalInstance()->start([this, anime] { | 38 QThreadPool::globalInstance()->start([this, anime] { |
| 31 QByteArray ba = HTTP::Get(anime.GetPosterUrl(), {}); | 39 QByteArray ba = HTTP::Get(anime.GetPosterUrl(), {}); |
| 32 ImageDownloadFinished(ba); | 40 ImageDownloadFinished(ba); |
| 33 }); | 41 }); |
| 34 | 42 |
| 35 QPixmap pixmap = QPixmap::fromImage(img); | 43 label->disconnect(); |
| 36 | |
| 37 label = new ClickableLabel(this); | |
| 38 label->setAlignment(Qt::AlignCenter); | |
| 39 connect(label, &ClickableLabel::clicked, this, | 44 connect(label, &ClickableLabel::clicked, this, |
| 40 [anime] { QDesktopServices::openUrl(Strings::ToQString(anime.GetServiceUrl())); }); | 45 [anime] { QDesktopServices::openUrl(Strings::ToQString(anime.GetServiceUrl())); }); |
| 41 layout->addWidget(label); | |
| 42 } | 46 } |
| 43 | 47 |
| 44 void Poster::ImageDownloadFinished(QByteArray arr) { | 48 void Poster::ImageDownloadFinished(const QByteArray& arr) { |
| 45 img.loadFromData(arr); | 49 img.loadFromData(arr); |
| 46 RenderToLabel(); | 50 RenderToLabel(); |
| 47 } | 51 } |
| 48 | 52 |
| 49 void Poster::RenderToLabel() { | 53 void Poster::RenderToLabel() { |
