From a4bf26f422d90ba96bd178d03dffedb2a421f8ac Mon Sep 17 00:00:00 2001 From: birkeh Date: Fri, 20 Oct 2017 16:58:31 +0200 Subject: [PATCH] first beta --- cmainwindow.cpp | 4 +- cmovie.cpp | 23 +++++++--- cmovieedit.cpp | 3 ++ cmoviesearch.cpp | 17 ++++++- cmovieviewitemdelegate.cpp | 91 ++++++++++++++++++++++++-------------- cthemoviedbv3.cpp | 3 ++ 6 files changed, 99 insertions(+), 42 deletions(-) diff --git a/cmainwindow.cpp b/cmainwindow.cpp index 338517b..abc769c 100644 --- a/cmainwindow.cpp +++ b/cmainwindow.cpp @@ -624,12 +624,12 @@ void cMainWindow::displayMovies() lpRoot = 0; else { - lpRoot = new QStandardItem(QString("%1").arg(szOldCollection)); + lpRoot = new QStandardItem(QString("%1").arg(szOldCollection)); m_lpMoviesListModel->appendRow(lpRoot); } } - QStandardItem* lpItem = new QStandardItem(QString("%1 (%2)  
%3
").arg(lpMovie->movieTitle()).arg(lpMovie->releaseDate().year()).arg(lpMovie->tagline())); + QStandardItem* lpItem = new QStandardItem(QString("%1 (%2)  
%3").arg(lpMovie->movieTitle()).arg(lpMovie->releaseDate().year()).arg(lpMovie->tagline())); lpItem->setData(QVariant::fromValue(lpMovie), Qt::UserRole); if(lpRoot) diff --git a/cmovie.cpp b/cmovie.cpp index 8d13bf1..dcf5f4b 100644 --- a/cmovie.cpp +++ b/cmovie.cpp @@ -110,9 +110,20 @@ void cMovie::setGenres(const QString& szGenres) m_szGenres = szGenres.split(","); } +QStringList cleanList(const QStringList& list) +{ + QStringList list1; + + for(int x = 0;x < list.count();x++) + { + if(!list.at(x).isEmpty()) + list1.append(list.at(x)); + } + return(list1); +} void cMovie::setGenres(const QStringList& szGenres) { - m_szGenres = szGenres; + m_szGenres = cleanList(szGenres); } QStringList cMovie::genres() @@ -187,7 +198,7 @@ void cMovie::setProductionCompanies(const QString& szProductionCompanies) void cMovie::setProductionCompanies(const QStringList& szProductionCompanies) { - m_szProductionCompanies = szProductionCompanies; + m_szProductionCompanies = cleanList(szProductionCompanies); } QStringList cMovie::productionCompanies() @@ -202,7 +213,7 @@ void cMovie::setProductionCountries(const QString& szProductionCountries) void cMovie::setProductionCountries(const QStringList& szProductionCountries) { - m_szProductionCountries = szProductionCountries; + m_szProductionCountries = cleanList(szProductionCountries); } QStringList cMovie::productionCountries() @@ -237,7 +248,7 @@ void cMovie::setSpokenLanguages(const QString& szSpokenLanguages) void cMovie::setSpokenLanguages(const QStringList& szSpokenLanguages) { - m_szSpokenLanguages = szSpokenLanguages; + m_szSpokenLanguages = cleanList(szSpokenLanguages); } QStringList cMovie::spokenLanguages() @@ -297,7 +308,7 @@ qint32 cMovie::voteCount() void cMovie::setCast(const QStringList &szCast) { - m_szCast = szCast; + m_szCast = cleanList(szCast); } QStringList cMovie::cast() @@ -307,7 +318,7 @@ QStringList cMovie::cast() void cMovie::setCrew(const QStringList &szCrew) { - m_szCrew = szCrew; + m_szCrew = cleanList(szCrew); } QStringList cMovie::crew() diff --git a/cmovieedit.cpp b/cmovieedit.cpp index 4fe65ca..cab0864 100644 --- a/cmovieedit.cpp +++ b/cmovieedit.cpp @@ -34,6 +34,7 @@ void cMovieEdit::setMovie(cMovie *lpMovie) break; case cMovie::StateProgress: ui->m_lpProgress->setChecked(true); + break; case cMovie::StateDone: ui->m_lpDone->setChecked(true); break; @@ -57,12 +58,14 @@ void cMovieEdit::setMovie(cMovie *lpMovie) lpItem->setText(1, str.at(1)); ui->m_lpDetailsActors->addTopLevelItem(lpItem); } + ui->m_lpDetailsActors->resizeColumnToContents(0); for(int x = 0;x < m_lpMovie->genres().count();x++) { lpItem = new QTreeWidgetItem(ui->m_lpDetailsGenre); lpItem->setText(0, m_lpMovie->genres().at(x)); ui->m_lpDetailsGenre->addTopLevelItem(lpItem); } + ui->m_lpDetailsGenre->resizeColumnToContents(0); } void cMovieEdit::on_m_lpInit_clicked() diff --git a/cmoviesearch.cpp b/cmoviesearch.cpp index 9f6e7b6..7ed6958 100644 --- a/cmoviesearch.cpp +++ b/cmoviesearch.cpp @@ -40,7 +40,22 @@ void cMovieSearch::on_m_lpSearchButton_clicked() lpDialog->show(); cTheMovieDBV3 theMovieDBV3; - QList movieList = theMovieDBV3.search(ui->m_lpSearch->text(), -1, "de"); + QString szSearchText = ui->m_lpSearch->text(); + qint16 iYear = -1; + + if(szSearchText.contains("(") && szSearchText.contains(")")) + { + QString tmp = szSearchText.mid(szSearchText.indexOf("(")+1); + if(tmp.contains(")")) + { + tmp = tmp.left(tmp.indexOf(")")); + iYear = tmp.toInt(); + + szSearchText = szSearchText.left(szSearchText.indexOf("(")-1); + } + } + + QList movieList = theMovieDBV3.search(szSearchText, iYear, "de"); ui->m_lpResults->clear(); diff --git a/cmovieviewitemdelegate.cpp b/cmovieviewitemdelegate.cpp index f83e3a8..20668b0 100644 --- a/cmovieviewitemdelegate.cpp +++ b/cmovieviewitemdelegate.cpp @@ -9,7 +9,7 @@ #include -#define STATE_INIT Qt::gray +#define STATE_INIT Qt::lightGray #define STATE_PROGRESS Qt::blue #define STATE_DONE Qt::green #define STATE_UNKNOWN Qt::black @@ -18,27 +18,14 @@ void cMovieViewItemDelegate::paint(QPainter* painter, const QStyleOptionViewItem { cMovie* lpMovie = qvariant_cast(index.data(Qt::UserRole)); QBrush oldBrush; + cMovie::State state; + QPen oldPen; QStyleOptionViewItem options = option; initStyleOption(&options, index); painter->save(); - QTextDocument doc; - doc.setHtml(options.text); - - options.text = ""; - options.widget->style()->drawControl(QStyle::CE_ItemViewItem, &options, painter); - - // shift text right to make icon visible - QSize iconSize = options.icon.actualSize(options.rect.size()); - painter->translate(options.rect.left()+iconSize.width(), options.rect.top()); - QRect clip(0, 0, options.rect.width()+iconSize.width(), options.rect.height()); - - //doc.drawContents(painter, clip); - - painter->setClipRect(clip); - if(!lpMovie) { int statusInit = 0; @@ -75,45 +62,83 @@ void cMovieViewItemDelegate::paint(QPainter* painter, const QStyleOptionViewItem } } if(statusProg) - painter->setBrush(STATE_PROGRESS); + state = cMovie::StateProgress; else if(statusInit) - painter->setBrush(STATE_INIT); + state = cMovie::StateInit; else - painter->setBrush(STATE_DONE); + state = cMovie::StateDone; } else - { - oldBrush = painter->brush(); + state = lpMovie->state(); - switch(lpMovie->state()) + QTextDocument doc; + + if(option.state & QStyle::State_Selected) + doc.setHtml(QString("%1").arg(options.text)); + else + { + switch(state) { case cMovie::StateInit: - painter->setBrush(STATE_INIT); + doc.setHtml(QString("%1").arg(options.text)); break; case cMovie::StateProgress: - painter->setBrush(STATE_PROGRESS); + doc.setHtml(QString("%1").arg(options.text)); break; case cMovie::StateDone: - painter->setBrush(STATE_DONE); + doc.setHtml(QString("%1").arg(options.text)); break; default: break; } } - QRect back = clip; - back.setLeft(back.left()+2); - back.setRight(back.right()-2); - back.setTop(back.top()+4); - back.setBottom(back.bottom()-4); + options.text = ""; + options.widget->style()->drawControl(QStyle::CE_ItemViewItem, &options, painter); + + // shift text right to make icon visible + QSize iconSize = options.icon.actualSize(options.rect.size()); + painter->translate(options.rect.left()+iconSize.width(), options.rect.top()); + QRect clip(0, 0, options.rect.width()+iconSize.width(), options.rect.height()); + + painter->setClipRect(clip); + + oldBrush = painter->brush(); + oldPen = painter->pen(); + + switch(state) + { + case cMovie::StateInit: + painter->setBrush(STATE_INIT); + if(!(option.state & QStyle::State_Selected)) + painter->setPen(STATE_INIT); + break; + case cMovie::StateProgress: + painter->setBrush(STATE_PROGRESS); + if(!(option.state & QStyle::State_Selected)) + painter->setPen(STATE_PROGRESS); + break; + case cMovie::StateDone: + painter->setBrush(STATE_DONE); + if(!(option.state & QStyle::State_Selected)) + painter->setPen(STATE_DONE); + break; + default: + break; + } + + QRect back = clip; + back.setLeft(back.left()+1); + back.setRight(back.right()-1); + back.setTop(back.top()+1); + back.setBottom(back.bottom()-1); painter->drawRect(back); painter->setBrush(oldBrush); + painter->setPen(oldPen); QAbstractTextDocumentLayout::PaintContext ctx; - // set text color to red for selected item - if (option.state & QStyle::State_Selected) - ctx.palette.setColor(QPalette::Text, QColor("red")); + ctx.clip = clip; doc.documentLayout()->draw(painter, ctx); diff --git a/cthemoviedbv3.cpp b/cthemoviedbv3.cpp index 4d5578f..9f9f693 100644 --- a/cthemoviedbv3.cpp +++ b/cthemoviedbv3.cpp @@ -66,6 +66,9 @@ QList cTheMovieDBV3::search(const QString& szMovie, const qint16& year, break; page++; + if(page > 20) + break; + delete reply; } else