diff --git a/cmainwindow.cpp b/cmainwindow.cpp index dee3d80..0e91374 100644 --- a/cmainwindow.cpp +++ b/cmainwindow.cpp @@ -192,6 +192,7 @@ void cMainWindow::initDB() " createdBy STRING," " homepage STRING," " lastAired DATE," + " languages STRING," " networks STRING," " nrEpisodes INTEGER," " nrSeasons INTEGER," @@ -341,7 +342,7 @@ void cMainWindow::loadSeriesDB() cSeason* lpSeason; cEpisode* lpEpisode; - if(query.exec("SELECT serie.seriesID,serie.seriesName,serie.originalName,serie.backdropPath,serie.createdBy,serie.homepage,serie.lastAired,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,episode.name,episode.episodeNumber,episode.airDate,episode.guestStars,episode.overview,episode.productioncode,episode.seasonNumber,episode.seasonID,episode.seriesID,episode.stillPath,episode.voteAverage,episode.voteCount,episode.crew,episode.state FROM serie LEFT JOIN episode ON serie.seriesID = episode.seriesID ORDER BY serie.seriesName, episode.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,episode.name,episode.episodeNumber,episode.airDate,episode.guestStars,episode.overview,episode.productioncode,episode.seasonNumber,episode.seasonID,episode.seriesID,episode.stillPath,episode.voteAverage,episode.voteCount,episode.crew,episode.state FROM serie LEFT JOIN episode ON serie.seriesID = episode.seriesID ORDER BY serie.seriesName, serie.firstAired, episode.seasonNumber, episode.episodeNumber;")) { while(query.next()) { @@ -351,7 +352,8 @@ void cMainWindow::loadSeriesDB() if(iSeriesID != iOldSeriesID) { m_serieList.add(iSeriesID); - iOldSeriesID = iSeriesID; + iOldSeriesID = iSeriesID; + iOldSeasonNumber = -1; } cSerie* lpSerie = m_serieList.add(iSeriesID); @@ -361,6 +363,7 @@ void cMainWindow::loadSeriesDB() lpSerie->setCreatedBy(query.value("createdBy").toString()); lpSerie->setHomepage(query.value("homepage").toString()); lpSerie->setLastAired(query.value("lastAired").toString()); + lpSerie->setLanguages(query.value("languages").toString()); lpSerie->setNetworks(query.value("networks").toString()); lpSerie->setEpisodes(query.value("nrEpisodes").toInt()); lpSerie->setSeasons(query.value("nrSeasons").toInt()); @@ -594,7 +597,8 @@ void cMainWindow::displaySeries() lpItems.at(lpSeason->number()+3-iMin)->setToolTip(szTooltip); } - if(lpSerie->status().compare("Ended", Qt::CaseInsensitive)) + if(lpSerie->status().compare("Ended", Qt::CaseInsensitive) && + lpSerie->status().compare("canceled", Qt::CaseInsensitive)) { lpItems.at(0)->setFont(font); lpItems.at(1)->setFont(font); diff --git a/cserie.cpp b/cserie.cpp index 9224d67..9fd2b5c 100644 --- a/cserie.cpp +++ b/cserie.cpp @@ -3,8 +3,11 @@ #include #include +#include #include +#include + cSerie::cSerie() : m_szSeriesName(""), @@ -108,6 +111,21 @@ QDate cSerie::lastAired() return(m_lastAired); } +void cSerie::setLanguages(const QString& szLanguages) +{ + m_szLanguages = szLanguages.split(","); +} + +void cSerie::setLanguages(const QStringList& szLanguages) +{ + m_szLanguages = szLanguages; +} + +QStringList cSerie::languages() +{ + return(m_szLanguages); +} + void cSerie::setNetworks(const QStringList& szNetworks) { m_szNetworks = cleanList(szNetworks); @@ -278,7 +296,7 @@ QStringList cSerie::crew() void cSerie::setGenre(const QString& szGenre) { - m_szGenre = szGenre.split("|"); + m_szGenre = szGenre.split(","); m_szGenre.removeAll(""); } @@ -411,8 +429,8 @@ bool cSerie::save(QSqlDatabase &db) QSqlQuery querySerie; QSqlQuery queryEpisode; - querySerie.prepare("INSERT INTO serie (seriesID,seriesName,originalName,backdropPath,createdBy,homepage,lastAired,networks,nrEpisodes,nrSeasons,originCountries,originalLanguage,popularity,posterPath,productionCompanies,type,voteAverage,voteCount,overview,firstAired,cast,crew,genre,status,download,cliffhanger)" - " VALUES (:seriesID,:seriesName,:originalName,:backdropPath,:createdBy,:homepage,:lastAired,:networks,:nrEpisodes,:nrSeasons,:originCountries,:originalLanguage,:popularity,:posterPath,:productionCompanies,:type,:voteAverage,:voteCount,:overview,:firstAired,:cast,:crew,:genre,:status,:download,:cliffhanger);"); + querySerie.prepare("INSERT INTO serie (seriesID,seriesName,originalName,backdropPath,createdBy,homepage,lastAired,languages,networks,nrEpisodes,nrSeasons,originCountries,originalLanguage,popularity,posterPath,productionCompanies,type,voteAverage,voteCount,overview,firstAired,cast,crew,genre,status,download,cliffhanger)" + " VALUES (:seriesID,:seriesName,:originalName,:backdropPath,:createdBy,:homepage,:lastAired,:languages,:networks,:nrEpisodes,:nrSeasons,:originCountries,:originalLanguage,:popularity,:posterPath,:productionCompanies,:type,:voteAverage,:voteCount,:overview,:firstAired,:cast,:crew,:genre,:status,:download,:cliffhanger);"); queryEpisode.prepare("INSERT INTO episode (id,name,episodeNumber,airDate,guestStars,overview,productioncode,seasonNumber,seasonID,seriesID,stillPath,voteAverage,voteCount,crew,state)" " VALUES (:id,:name,:episodeNumber,:airDate,:guestStars,:overview,:productioncode,:seasonNumber,:seasonID,:seriesID,:stillPath,:voteAverage,:voteCount,:crew,:state);"); @@ -429,6 +447,7 @@ bool cSerie::save(QSqlDatabase &db) querySerie.bindValue(":createdBy", createdBy().join(",")); querySerie.bindValue(":homepage", homepage()); querySerie.bindValue(":lastAired", lastAired()); + querySerie.bindValue(":languages", languages().join(",")); querySerie.bindValue(":networks", networks().join(",")); querySerie.bindValue(":nrEpisodes", episodes()); querySerie.bindValue(":nrSeasons", seasons()); @@ -484,6 +503,8 @@ bool cSerie::save(QSqlDatabase &db) } } } + else + qDebug() << querySerie.lastError().text(); } db.commit(); @@ -499,7 +520,7 @@ bool cSerie::del(QSqlDatabase& db) query.bindValue(":seriesID", seriesID()); query.exec(); - query.prepare("DELETE FROM serie WHERE id=:seriesID;"); + query.prepare("DELETE FROM serie WHERE seriesID=:seriesID;"); query.bindValue(":seriesID", seriesID()); query.exec(); diff --git a/cserie.h b/cserie.h index d82b377..163e9da 100644 --- a/cserie.h +++ b/cserie.h @@ -37,6 +37,10 @@ public: void setLastAired(const QDate& lastAired); QDate lastAired(); + void setLanguages(const QString& szLanguages); + void setLanguages(const QStringList& szLanguages); + QStringList languages(); + void setNetworks(const QStringList& szNetworks); void setNetworks(const QString& szNetworks); QStringList networks(); @@ -134,6 +138,7 @@ private: QStringList m_szCreatedBy; QString m_szHomepage; QDate m_lastAired; + QStringList m_szLanguages; QStringList m_szNetworks; qint16 m_iEpisodes; qint16 m_iSeasons; diff --git a/cthemoviedbv3.cpp b/cthemoviedbv3.cpp index 3d8b533..3b94aed 100644 --- a/cthemoviedbv3.cpp +++ b/cthemoviedbv3.cpp @@ -370,6 +370,11 @@ cSerie* cTheMovieDBV3::loadSerie(const qint32 &iID, const QString& szLanguage) tmpList.clear(); lpSerie->setHomepage(jsonObj["homepage"].toString()); lpSerie->setLastAired(jsonObj["last_air_date"].toString()); + tmpArray = jsonObj["languages"].toArray(); + for(int x = 0;x < tmpArray.count();x++) + tmpList.append(tmpArray.at(x).toString()); + lpSerie->setLanguages(tmpList); + tmpList.clear(); lpSerie->setSeriesName(jsonObj["name"].toString()); tmpArray = jsonObj["networks"].toArray(); for(int x = 0;x < tmpArray.count();x++) @@ -379,8 +384,8 @@ cSerie* cTheMovieDBV3::loadSerie(const qint32 &iID, const QString& szLanguage) lpSerie->setEpisodes(jsonObj["number_of_episodes"].toInt()); lpSerie->setSeasons(jsonObj["number_of_seasons"].toInt()); tmpArray = jsonObj["origin_country"].toArray(); - for(int x = 0;x < tmpArray.count();x++) //!!!!!!!!!! - tmpList.append(tmpArray.at(x).toObject()["name"].toString()); + for(int x = 0;x < tmpArray.count();x++) + tmpList.append(tmpArray.at(x).toString()); lpSerie->setOriginCountries(tmpList); tmpList.clear(); lpSerie->setOriginalLanguage(jsonObj["original_language"].toString()); @@ -488,7 +493,7 @@ cSerie* cTheMovieDBV3::loadSerie(const qint32 &iID, const QString& szLanguage) lpEpisode->setSeriesID(lpSerie->seriesID()); QJsonArray jsonArrayCrew = tmpObj["crew"].toArray(); - QJsonArray jsonArrayGuestStars = tmpObj["guest_start"].toArray(); + QJsonArray jsonArrayGuestStars = tmpObj["guest_stars"].toArray(); QStringList szCrew; QStringList szGuestStars; diff --git a/cupdatethread.cpp b/cupdatethread.cpp index 536e985..273214c 100644 --- a/cupdatethread.cpp +++ b/cupdatethread.cpp @@ -2,6 +2,8 @@ #include "cseason.h" #include "cepisode.h" #include "cmessagedialog.h" +#include "cthemoviedbv3.h" + #include #include @@ -25,21 +27,21 @@ void cUpdateThread::run() QTime timer; timer.restart(); QString szFailed; -/* + for(int x = 0;x < m_serieList.count();x++) { cSerie* lpSerie = m_serieList.at(x); if(lpSerie) { emit updateMessage(lpSerie->seriesName(), x); - cTheTVDBV2 tvDB; + cTheMovieDBV3 theMovieDB; cSerie* lpSerieNew; if(lpSerie->seriesID() != -1) { - lpSerieNew = tvDB.load(lpSerie->id(), "de"); + lpSerieNew = theMovieDB.loadSerie(lpSerie->seriesID(), "de"); if(!lpSerieNew) - lpSerieNew = tvDB.load(lpSerie->id(), "en"); + lpSerieNew = theMovieDB.loadSerie(lpSerie->seriesID(), "en"); if(!lpSerieNew) { if(szFailed.length()) @@ -76,7 +78,6 @@ void cUpdateThread::run() msgBox.setText(szFailed + QString(" has failed to update.")); msgBox.exec(); } -*/ } void cUpdateThread::setData(cMessageDialog* lpMessageDialog, const cSerieList &serieList, const QSqlDatabase& db)