diff --git a/cedit.cpp b/cedit.cpp index 362bc00..1e50f66 100644 --- a/cedit.cpp +++ b/cedit.cpp @@ -46,6 +46,11 @@ cEdit::cEdit(QWidget *parent) : { ui->setupUi(this); + QPalette palette = ui->m_lpDownloadLinkLabel->palette(); + QColor col = palette.color(QPalette::Window); + QString color = QString("background-color: rgb(%1,%2,%3,%4);").arg(col.red()).arg(col.green()).arg(col.blue()).arg(95); + ui->m_lpScrollArea->setStyleSheet(color); + connect(ui->m_lpAllInit, SIGNAL(clicked()), this, SLOT(lpAllInit_clicked())); connect(ui->m_lpAllProgress, SIGNAL(clicked()), this, SLOT(lpAllProgress_clicked())); connect(ui->m_lpAllDone, SIGNAL(clicked()), this, SLOT(lpAllDone_clicked())); @@ -86,7 +91,6 @@ void cEdit::setSerie(cSerie* lpSerie) if(!lpSerie) return; - ui->m_lpName->setText(lpSerie->seriesName()); ui->m_lpFirstAired->setDate(lpSerie->firstAired()); ui->m_lpCliffhanger->setChecked(lpSerie->cliffhanger()); @@ -132,6 +136,7 @@ void cEdit::setSerie(cSerie* lpSerie) m_lpGroup = new QButtonGroup(this); lpEpisode->setGroup(m_lpGroup); m_lpLabel = new QLabel(QString("%1").arg(lpEpisode->episodeNumber()), m_lpGroupBox); + lpEpisode->setLabel(m_lpLabel); if(bFirst) @@ -190,6 +195,11 @@ void cEdit::setSerie(cSerie* lpSerie) m_lpVerticalSpacer = new QSpacerItem(20, 40, QSizePolicy::Minimum, QSizePolicy::Expanding); ui->m_lpGridLayoutScroll->addItem(m_lpVerticalSpacer, x+1, 0, 1, 1); + + cMovieImage image; + //QPixmap backdrop = image.getImage(m_lpSerie->backdropPath()); + QPixmap poster = image.getImage(m_lpSerie->posterPath()); + ui->m_lpProgressTab->setPixmap(poster); } void cEdit::lpAllInit_clicked() @@ -242,11 +252,8 @@ void cEdit::on_m_lpTabWidget_tabBarClicked(int index) lpDialog->show(); cMovieImage image; - QPixmap backdrop = image.getImage(m_lpSerie->backdropPath()); - //QPalette palette; - //palette.setBrush(this->backgroundRole(), QBrush(backdrop.toImage())); - //this->setPalette(palette); -// ui->m_lpDetailsBackdrop->setPixmap(backdrop); + QPixmap poster = image.getImage(m_lpSerie->posterPath()); + ui->m_lpDetailsImage->setPixmap(poster.scaledToHeight(200)); ui->m_lpDetailsOverview->setText(m_lpSerie->overview()); ui->m_lpDetailsSeasonTab->clear(); diff --git a/cedit.ui b/cedit.ui index 0dbe06b..f9f73df 100644 --- a/cedit.ui +++ b/cedit.ui @@ -6,7 +6,7 @@ 0 0 - 804 + 1173 732 @@ -21,7 +21,7 @@ 1 - + Progress @@ -61,7 +61,7 @@ - + Download Link: @@ -107,10 +107,13 @@ 0 0 - 754 + 1123 546 + + true + @@ -121,134 +124,130 @@ - + Details - + - - - - + + + + + + + Actors + + + + + + + 2 + + + false + + + + 1 + + + + + 2 + + + + + + + + + - 758 - 140 + 16777215 + 16777215 - - QFrame::Box - - - - - - Qt::AlignCenter - - - - - - + true - - - - 0 - 0 - 756 - 241 - - - - - - - - - true - - - - - - - - - - - Actors - - - - - - - 2 - - - false - - - - 1 - - - - - 2 - - - - - - - - - - - - Genre - - - - - - - false - - - - 1 - - - - - - - - - - - - - - - - 0 - - - - Tab 1 - - - + + + + + + Genre + + + + + + + false + + + + 1 + + + + + + + + + + + + + 0 + 0 + + + + QFrame::Box + + + + + + Qt::AlignCenter + + + + + + + Qt::Vertical + + + + 20 + 40 + + + + + + + + + 0 + + + + Tab 1 + + + + @@ -273,6 +272,12 @@ QLabel
cverticallabel.h
+ + cPixmapWidget + QWidget +
cpixmapwidget.h
+ 1 +
diff --git a/cepisodedetails.cpp b/cepisodedetails.cpp index 40882f2..491e1be 100644 --- a/cepisodedetails.cpp +++ b/cepisodedetails.cpp @@ -5,6 +5,7 @@ #include "cmessageanimatedialog.h" #include +#include cEpisodeDetails::cEpisodeDetails(QWidget *parent) : @@ -26,6 +27,20 @@ void cEpisodeDetails::setEpisode(cEpisode* lpEpisode) m_lpEpisode = lpEpisode; ui->m_lpEpisodeTitle->setText(lpEpisode->name()); ui->m_lpOverview->setText(lpEpisode->overview()); + + QTreeWidgetItem* lpItem; + for(int x = 0;x < lpEpisode->guestStars().count();x++) + { + QStringList tmp = lpEpisode->guestStars().at(x).split(","); + lpItem = new QTreeWidgetItem(ui->m_lpDetailsActors); + lpItem->setText(0, tmp.at(0)); + if(tmp.count() > 1) + lpItem->setText(1, tmp.at(1)); + + ui->m_lpDetailsActors->addTopLevelItem(lpItem); + } + ui->m_lpDetailsActors->resizeColumnToContents(0); + ui->m_lpDetailsActors->resizeColumnToContents(1); } void cEpisodeDetails::loadImages() @@ -42,7 +57,7 @@ void cEpisodeDetails::loadImages() lpDialog->show(); cMovieImage image; - QPixmap pixmap = image.getImage(m_lpEpisode->stillPath()).scaledToHeight(200); + QPixmap pixmap = image.getImage(m_lpEpisode->stillPath()).scaledToHeight(100); ui->m_lpEpisodeThumb->setPixmap(pixmap); delete lpDialog; diff --git a/cepisodedetails.ui b/cepisodedetails.ui index 1c6b829..fb7dead 100644 --- a/cepisodedetails.ui +++ b/cepisodedetails.ui @@ -6,8 +6,8 @@ 0 0 - 400 - 300 + 759 + 502 @@ -15,29 +15,67 @@ - + - - - + + + + 12 + 75 + true + + + + true - + - - - - 12 - 75 - true - - - - true - - + + + + + + + + Qt::AlignCenter + + + + + + + + + Guest Stars + + + + + + + 2 + + + false + + + + 1 + + + + + 2 + + + + + + + @@ -49,8 +87,8 @@ 0 0 - 365 - 245 + 363 + 447 @@ -71,6 +109,13 @@
+ + + cVerticalLabel + QLabel +
cverticallabel.h
+
+
diff --git a/cimage.cpp b/cimage.cpp deleted file mode 100644 index 34713d3..0000000 --- a/cimage.cpp +++ /dev/null @@ -1,65 +0,0 @@ -#include "common.h" - -#include "cimage.h" - -#include -#include -#include -#include -#include -#include -#include - - -cImage::cImage() -{ -} - -QPixmap cImage::getImage(const QString& szFileName) -{ - QPixmap pixmap; - - QString szPath = rootPath() + QDir::separator() + szFileName; - - if(szFileName.isEmpty()) - pixmap.load(rootPath() + QDir::separator() + QDir::separator() + "empty.jpg"); - else - pixmap.load(szPath); - - if(!pixmap.width()) - return(downloadFile(szFileName)); - - return(pixmap); -} - -QPixmap cImage::downloadFile(const QString& szFileName) -{ - QPixmap pixmap; - - QString szPath = rootPath() + QDir::separator() + szFileName; -// QString szURL = "http://thetvdb.com/banners/" + szFileName; - QString szURL = "https://www.thetvdb.com/banners/" + szFileName; - - QNetworkAccessManager networkManager; - QUrl url(szURL); - QNetworkRequest request(url); - request.setHeader(QNetworkRequest::ContentTypeHeader, "application/xml"); - - QNetworkReply* reply = networkManager.get(request); - QEventLoop loop; - - QObject::connect(reply, SIGNAL(finished()), &loop, SLOT(quit())); - loop.exec(); - - QByteArray szData = reply->readAll(); - delete reply; - - pixmap.loadFromData(szData); - - QDir dir(szPath); - QFileInfo fileInfo(szPath); - dir.mkpath(dir.filePath(fileInfo.absolutePath())); - pixmap.save(szPath); - - return(pixmap); -} diff --git a/cimage.h b/cimage.h deleted file mode 100644 index 3605a1f..0000000 --- a/cimage.h +++ /dev/null @@ -1,17 +0,0 @@ -#ifndef CIMAGE_H -#define CIMAGE_H - - -#include - - -class cImage -{ -public: - cImage(); - QPixmap getImage(const QString& szFileName); -private: - QPixmap downloadFile(const QString& szFileName); -}; - -#endif // CIMAGE_H diff --git a/cmainwindow.cpp b/cmainwindow.cpp index f81aeec..f202d1a 100644 --- a/cmainwindow.cpp +++ b/cmainwindow.cpp @@ -10,7 +10,6 @@ #include "cmessagedialog.h" #include "cedit.h" #include "cmovieedit.h" -#include "cimage.h" #include "cthemoviedbv3.h" @@ -364,13 +363,71 @@ void cMainWindow::loadSeriesDB() qint32 iSeasonNumber; cSeason* lpSeason; cEpisode* lpEpisode; + QString szQuery = + " SELECT serie.seriesID seriesID," + " serie.seriesName seriesName," + " serie.originalName originalName," + " serie.backdropPath backdropPath," + " serie.createdBy createdBy," + " serie.homepage homepage," + " serie.lastAired lastAired," + " serie.languages languages," + " serie.networks networks," + " serie.nrEpisodes nrEpisodes," + " serie.nrSeasons nrSeasons," + " serie.originCountries originCountries," + " serie.originalLanguage originalLanguage," + " serie.popularity popularity," + " serie.posterPath posterPath," + " serie.productionCompanies productionCompanies," + " serie.type type," + " serie.voteAverage voteAverage," + " serie.voteCount voteCount," + " serie.overview overview," + " serie.firstAired firstAired," + " serie.cast cast," + " serie.crew crew," + " serie.genre genre," + " serie.status status," + " serie.download download," + " serie.cliffhanger cliffhanger," + " season._id s__id," + " season.airDate s_airDate," + " season.name s_name," + " season.overview s_overview," + " season.id s_id," + " season.posterPath s_posterPath," + " season.seasonNumber s_seasonNumber," + " season.seriesID s_seriesID," + " episode.id e_id," + " episode.name e_name," + " episode.episodeNumber e_episodeNumber," + " episode.airDate e_airDate," + " episode.guestStars e_guestStars," + " episode.overview e_overview," + " episode.productioncode e_productioncode," + " episode.seasonNumber e_seasonNumber," + " episode.seasonID e_seasonID," + " episode.seriesID e_seriesID," + " episode.stillPath e_stillPath," + " episode.voteAverage e_voteAverage," + " episode.voteCount e_voteCount," + " episode.crew e_crew," + " episode.state e_state" + " FROM serie" + " LEFT JOIN season ON serie.seriesID = season.seriesID" + " LEFT JOIN episode ON serie.seriesID = episode.seriesID AND season.seasonNumber = episode.seasonNumber" + " ORDER BY serie.seriesName," + " serie.firstAired," + " season.seasonNumber," + " episode.episodeNumber;"; - if(query.exec("SELECT serie.seriesID,serie.seriesName,serie.originalName,serie.backdropPath,serie.createdBy,serie.homepage,serie.lastAired,serie.languages,serie.networks,serie.nrEpisodes,serie.nrSeasons,serie.originCountries,serie.originalLanguage,serie.popularity,serie.posterPath,serie.productionCompanies,serie.type,serie.voteAverage,serie.voteCount,serie.overview,serie.firstAired,serie.cast,serie.crew,serie.genre,serie.status,serie.download,serie.cliffhanger,episode.id eid,episode.name ename,episode.episodeNumber eepisodeNumber,episode.airDate eairDate,episode.guestStars eguestStars,episode.overview eoverview,episode.productioncode eproductioncode,episode.seasonNumber eseasonNumber,episode.seasonID eseasonID,episode.seriesID eseriesID,episode.stillPath estillPath,episode.voteAverage evoteAverage,episode.voteCount evoteCount,episode.crew ecrew,episode.state estate FROM serie LEFT JOIN episode ON serie.seriesID = episode.seriesID ORDER BY serie.seriesName, serie.firstAired, episode.seasonNumber, episode.episodeNumber;")) + if(query.exec(szQuery)) { while(query.next()) { iSeriesID = query.value("seriesID").toInt(); - iSeasonNumber = query.value("eseasonNumber").toInt(); + iSeasonNumber = query.value("e_seasonNumber").toInt(); if(iSeriesID != iOldSeriesID) { @@ -409,27 +466,33 @@ void cMainWindow::loadSeriesDB() if(iSeasonNumber != iOldSeasonNumber) { - lpSeason = lpSerie->addSeason(query.value("eseasonNumber").toInt()); + lpSeason = lpSerie->addSeason(query.value("s_seasonNumber").toInt()); + lpSeason->set_ID(query.value("s__id").toInt()); + lpSeason->setAirDate(query.value("s_airDate").toString()); + lpSeason->setName(query.value("s_name").toString()); + lpSeason->setOverview(query.value("s_overview").toString()); + lpSeason->setID(query.value("s_id").toInt()); + lpSeason->setPosterPath(query.value("s_posterPath").toString()); iOldSeasonNumber = iSeasonNumber; } lpEpisode = lpSeason->addEpisode(iSeasonNumber); - lpEpisode->setID(query.value("eid").toInt()); - lpEpisode->setName(query.value("ename").toString()); - lpEpisode->setEpisodeNumber(query.value("eepisodeNumber").toInt()); - lpEpisode->setAirDate(query.value("eairDate").toString()); - lpEpisode->setGuestStars(query.value("eguestStars").toString()); - lpEpisode->setOverview(query.value("eoverview").toString()); - lpEpisode->setProductionCode(query.value("eproductioncode").toString()); - lpEpisode->setSeasonNumber(query.value("eseasonNumber").toInt()); - lpEpisode->setSeasonID(query.value("eseasonID").toInt()); - lpEpisode->setSeriesID(query.value("eseriesID").toInt()); - lpEpisode->setStillPath(query.value("estillPath").toString()); - lpEpisode->setVoteAverage(query.value("evoteAverage").toDouble()); - lpEpisode->setVoteCount(query.value("evoteCount").toInt()); - lpEpisode->setCrew(query.value("ecrew").toString()); - lpEpisode->setState((cEpisode::State)query.value("estate").toInt()); + lpEpisode->setID(query.value("e_id").toInt()); + lpEpisode->setName(query.value("e_name").toString()); + lpEpisode->setEpisodeNumber(query.value("e_episodeNumber").toInt()); + lpEpisode->setAirDate(query.value("e_airDate").toString()); + lpEpisode->setGuestStars(query.value("e_guestStars").toString()); + lpEpisode->setOverview(query.value("e_overview").toString()); + lpEpisode->setProductionCode(query.value("e_productioncode").toString()); + lpEpisode->setSeasonNumber(query.value("e_seasonNumber").toInt()); + lpEpisode->setSeasonID(query.value("e_seasonID").toInt()); + lpEpisode->setSeriesID(query.value("e_seriesID").toInt()); + lpEpisode->setStillPath(query.value("e_stillPath").toString()); + lpEpisode->setVoteAverage(query.value("e_voteAverage").toDouble()); + lpEpisode->setVoteCount(query.value("e_voteCount").toInt()); + lpEpisode->setCrew(query.value("e_crew").toString()); + lpEpisode->setState((cEpisode::State)query.value("e_state").toInt()); } } } diff --git a/cpixmapwidget.cpp b/cpixmapwidget.cpp new file mode 100644 index 0000000..ba1cc2d --- /dev/null +++ b/cpixmapwidget.cpp @@ -0,0 +1,24 @@ +#include "cpixmapwidget.h" + +#include + + +cPixmapWidget::cPixmapWidget(QWidget *parent) : QWidget(parent) +{ + +} + +void cPixmapWidget::setPixmap(const QPixmap& pixmap) +{ + m_pixmap = pixmap; +} + +void cPixmapWidget::paintEvent(QPaintEvent *event) +{ + if(!m_pixmap.isNull()) + { + QPainter painter(this); + painter.drawPixmap(0, 0, m_pixmap.scaled(width(), height(), Qt::KeepAspectRatioByExpanding, Qt::SmoothTransformation)); + } + QWidget::paintEvent(event); +} diff --git a/cpixmapwidget.h b/cpixmapwidget.h new file mode 100644 index 0000000..3069788 --- /dev/null +++ b/cpixmapwidget.h @@ -0,0 +1,25 @@ +#ifndef CPIXMAPWIDGET_H +#define CPIXMAPWIDGET_H + + +#include +#include + + +class cPixmapWidget : public QWidget +{ + Q_OBJECT +public: + explicit cPixmapWidget(QWidget *parent = nullptr); + void setPixmap(const QPixmap& pixmap); + +signals: + +public slots: + +protected: + QPixmap m_pixmap; + void paintEvent(QPaintEvent *event); +}; + +#endif // CPIXMAPWIDGET_H diff --git a/cscrollarea.cpp b/cscrollarea.cpp new file mode 100644 index 0000000..e07a1c6 --- /dev/null +++ b/cscrollarea.cpp @@ -0,0 +1,23 @@ +#include "cscrollarea.h" + +#include + +cScrollArea::cScrollArea(QWidget* parent) : + QScrollArea(parent) +{ +} + +void cScrollArea::setPixmap(const QPixmap& pixmap) +{ + m_pixmap = pixmap; +} + +void cScrollArea::paintEvent(QPaintEvent *event) +{ + if(!m_pixmap.isNull()) + { + QPainter painter(this); + painter.drawPixmap(0, 0, m_pixmap); + } + QScrollArea::paintEvent(event); +} diff --git a/cscrollarea.h b/cscrollarea.h new file mode 100644 index 0000000..bd929c1 --- /dev/null +++ b/cscrollarea.h @@ -0,0 +1,19 @@ +#ifndef CSCROLLAREA_H +#define CSCROLLAREA_H + + +#include +#include + + +class cScrollArea : public QScrollArea +{ +public: + cScrollArea(QWidget* parent = 0); + void setPixmap(const QPixmap& pixmap); +protected: + QPixmap m_pixmap; + void paintEvent(QPaintEvent *event); +}; + +#endif // CSCROLLAREA_H diff --git a/cseasondetails.cpp b/cseasondetails.cpp index 20972a9..757e777 100644 --- a/cseasondetails.cpp +++ b/cseasondetails.cpp @@ -6,6 +6,8 @@ #include "cmessageanimatedialog.h" +#include "cmovieimage.h" + #include @@ -23,6 +25,13 @@ cSeasonDetails::~cSeasonDetails() void cSeasonDetails::setSeason(cSeason* lpSeason) { + ui->m_lpSeasonName->setText(lpSeason->name()); + ui->m_lpSeasonOverview->setText(lpSeason->overview()); + + cMovieImage image; + QPixmap poster = image.getImage(lpSeason->posterPath()); + ui->m_lpSeasonPoster->setPixmap(poster.scaledToHeight(200)); + for(int x = 0;x < lpSeason->episodeList().count();x++) { cEpisode* lpEpisode = lpSeason->episodeList().at(x); diff --git a/cseasondetails.ui b/cseasondetails.ui index 3c3567e..ffa0810 100644 --- a/cseasondetails.ui +++ b/cseasondetails.ui @@ -15,11 +15,50 @@ - - - -1 - - + + + + + + + + 12 + 75 + true + + + + true + + + + + + + true + + + + + + + + + + Qt::AlignCenter + + + + + + + + + -1 + + + + diff --git a/qtMovies.pro b/qtMovies.pro index eb64f2a..9adfd3a 100644 --- a/qtMovies.pro +++ b/qtMovies.pro @@ -21,7 +21,6 @@ SOURCES += main.cpp\ csearch.cpp \ cmessageanimatedialog.cpp \ cedit.cpp \ - cimage.cpp \ cseasondetails.cpp \ cverticallabel.cpp \ cepisodedetails.cpp \ @@ -34,7 +33,9 @@ SOURCES += main.cpp\ cmovieviewitemdelegate.cpp \ common.cpp \ cmovieedit.cpp \ - cmovieimage.cpp + cmovieimage.cpp \ + cscrollarea.cpp \ + cpixmapwidget.cpp HEADERS += cmainwindow.h \ cserie.h \ @@ -44,7 +45,6 @@ HEADERS += cmainwindow.h \ csearch.h \ cmessageanimatedialog.h \ cedit.h \ - cimage.h \ cseasondetails.h \ cverticallabel.h \ cepisodedetails.h \ @@ -57,7 +57,9 @@ HEADERS += cmainwindow.h \ cmovieviewitemdelegate.h \ common.h \ cmovieedit.h \ - cmovieimage.h + cmovieimage.h \ + cscrollarea.h \ + cpixmapwidget.h FORMS += cmainwindow.ui \ csearch.ui \