From 6defbf5e83da11f025a22db2e1ce127980ee1e4a Mon Sep 17 00:00:00 2001 From: birkeh Date: Sat, 24 Nov 2018 22:45:04 +0100 Subject: [PATCH] Preferences Dialog --- cdiscover.cpp | 2 +- cdiscover.h | 4 +- cexportdialog.cpp | 4 +- cmainwindow.cpp | 122 +++++++++++++++++--------- cmainwindow.h | 9 +- cmoviediscover.cpp | 4 +- cmoviediscover.h | 4 +- cmoviesearch.cpp | 7 +- cmoviesearch.h | 6 +- cpreferences.cpp | 74 ++++++++++++++++ cpreferences.h | 29 +++++++ cpreferences.ui | 207 ++++++++++++++++++++++++++++++++++++++++++++ csearch.cpp | 7 +- csearch.h | 5 +- cseasondelegate.cpp | 5 +- cseasondelegate.h | 5 +- cthemoviedbv3.cpp | 58 +++++++++++-- cthemoviedbv3.h | 8 +- main.cpp | 2 +- qtMultimediaDB.pro | 9 +- 20 files changed, 487 insertions(+), 84 deletions(-) create mode 100644 cpreferences.cpp create mode 100644 cpreferences.h create mode 100644 cpreferences.ui diff --git a/cdiscover.cpp b/cdiscover.cpp index d24a97c..5c2b0fc 100644 --- a/cdiscover.cpp +++ b/cdiscover.cpp @@ -89,7 +89,7 @@ void cDiscover::on_m_lpDiscover_clicked() setCursor(Qt::WaitCursor); cTheMovieDBV3 movieDB3; - QList serieList = movieDB3.discoverSerie(szText, iYear, genres, voteMin, voteMax, "de-DE"); + QList serieList = movieDB3.discoverSerie(m_serieList, szText, iYear, genres, voteMin, voteMax, "de-DE"); m_lpSeriesModel->clear(); diff --git a/cdiscover.h b/cdiscover.h index c243655..37c8e53 100644 --- a/cdiscover.h +++ b/cdiscover.h @@ -2,11 +2,11 @@ #define CDISCOVER_H -#include - #include #include +#include "cserie.h" + namespace Ui { class cDiscover; diff --git a/cexportdialog.cpp b/cexportdialog.cpp index df80a98..139ccc3 100644 --- a/cexportdialog.cpp +++ b/cexportdialog.cpp @@ -13,8 +13,8 @@ cExportDialog::cExportDialog(QWidget *parent) : ui->setupUi(this); QSettings settings; - QString szExportSerie = settings.value("exportSeriePath", QDir::homePath()).toString(); - QString szExportMovie = settings.value("exportMoviePath", QDir::homePath()).toString(); + QString szExportSerie = settings.value("exportSeriePath", QString("%1%2series.xml").arg(QDir::homePath()).arg(QDir::separator())).toString(); + QString szExportMovie = settings.value("exportMoviePath", QString("%1%2movies.xml").arg(QDir::homePath()).arg(QDir::separator())).toString(); bool bExportSerie = settings.value("exportSerie", QDir::homePath()).toBool(); bool bExportMovie = settings.value("exportMovie", QDir::homePath()).toBool(); diff --git a/cmainwindow.cpp b/cmainwindow.cpp index ebddd33..d9c95ca 100644 --- a/cmainwindow.cpp +++ b/cmainwindow.cpp @@ -50,6 +50,8 @@ #include +#include + static bool serieSort(cSerie* s1, cSerie* s2) { @@ -92,28 +94,31 @@ cMainWindow::cMainWindow(QWidget *parent) : m_szFindMovie(""), m_lpFileMenu(nullptr), m_lpFileExportAction(nullptr), + m_lpFilePreferencesAction(nullptr), m_lpFileExitAction(nullptr) { QSettings settings; ui->setupUi(this); - m_lpFileMenu = menuBar()->addMenu(tr("&File")); + m_lpFileMenu = menuBar()->addMenu(tr("&File")); - m_lpFileExportAction = m_lpFileMenu->addAction(tr("&Export"), this, &cMainWindow::onActionExport); + m_lpFileExportAction = m_lpFileMenu->addAction(tr("&Export"), this, &cMainWindow::onActionExport); m_lpFileExportAction->setShortcut(Qt::CTRL + Qt::Key_E); - m_lpFileExportAction = m_lpFileMenu->addAction(tr("E&xit"), this, &cMainWindow::onActionExit); + m_lpFilePreferencesAction = m_lpFileMenu->addAction(tr("&Preferences"), this, &cMainWindow::onActionPreferences); + + m_lpFileExportAction = m_lpFileMenu->addAction(tr("E&xit"), this, &cMainWindow::onActionExit); m_lpFileExportAction->setShortcut(Qt::CTRL + Qt::Key_X); ui->m_lpMainTab->setCurrentIndex(0); - ui->m_lpSeriesFilter->setChecked(settings.value("seriesFilter/enabled", QVariant::fromValue(false)).toBool()); - ui->m_lpSeriesFilterInitialized->setCheckState(static_cast(settings.value("seriesFilter/hasInit", Qt::PartiallyChecked).toUInt())); - ui->m_lpSeriesFilterProgress->setCheckState(static_cast(settings.value("seriesFilter/hasProgress", Qt::PartiallyChecked).toUInt())); - ui->m_lpSeriesFilterDone->setCheckState(static_cast(settings.value("seriesFilter/hasDone", Qt::PartiallyChecked).toUInt())); - ui->m_lpSeriesFilterWithLink->setCheckState(static_cast(settings.value("seriesFilter/hasLink", Qt::PartiallyChecked).toUInt())); - ui->m_lpSeriesFilterNotFinished->setCheckState(static_cast(settings.value("seriesFilter/hasNotFinished", Qt::PartiallyChecked).toUInt())); - ui->m_lpSeriesFilterCliffhanger->setCheckState(static_cast(settings.value("seriesFilter/isCliffhanger", Qt::PartiallyChecked).toUInt())); + ui->m_lpSeriesFilter->setChecked(settings.value("serieFilter/enabled", QVariant::fromValue(false)).toBool()); + ui->m_lpSeriesFilterInitialized->setCheckState(static_cast(settings.value("serieFilter/hasInit", Qt::PartiallyChecked).toUInt())); + ui->m_lpSeriesFilterProgress->setCheckState(static_cast(settings.value("serieFilter/hasProgress", Qt::PartiallyChecked).toUInt())); + ui->m_lpSeriesFilterDone->setCheckState(static_cast(settings.value("serieFilter/hasDone", Qt::PartiallyChecked).toUInt())); + ui->m_lpSeriesFilterWithLink->setCheckState(static_cast(settings.value("serieFilter/hasLink", Qt::PartiallyChecked).toUInt())); + ui->m_lpSeriesFilterNotFinished->setCheckState(static_cast(settings.value("serieFilter/hasNotFinished", Qt::PartiallyChecked).toUInt())); + ui->m_lpSeriesFilterCliffhanger->setCheckState(static_cast(settings.value("serieFilter/isCliffhanger", Qt::PartiallyChecked).toUInt())); ui->m_lpMoviesFilter->setChecked(settings.value("movieFilter/enabled", QVariant::fromValue(false)).toBool()); ui->m_lpMoviesFilterInitialized->setCheckState(static_cast(settings.value("movieFilter/hasInit", Qt::PartiallyChecked).toUInt())); @@ -696,10 +701,13 @@ void cMainWindow::loadMoviesDB() void cMainWindow::setSeriesStyle(QListlpItems) { - cSerie* lpSerie = lpItems.at(0)->data(Qt::UserRole).value(); + cSerie* lpSerie = lpItems.at(0)->data(Qt::UserRole).value(); if(!lpSerie) return; + QSettings settings; + bool bDisplaySeason0 = settings.value("displaySeason0", true).toBool(); + qint32 iMin = m_serieList.minSeason(); qint32 iEpisodes = 0; bool bHasInit = false; @@ -711,6 +719,9 @@ void cMainWindow::setSeriesStyle(QListlpItems) QFont font = ui->m_lpSeriesList1->font(); QFont fontI = ui->m_lpSeriesList1->font(); + if(!iMin && !bDisplaySeason0) + iMin = 1; + font.setBold(true); fontI.setItalic(true); @@ -726,6 +737,10 @@ void cMainWindow::setSeriesStyle(QListlpItems) QString szDone = ""; cSeason* lpSeason = seasonList.at(season); + + if(!lpSeason->seasonNumber() && !bDisplaySeason0) + continue; + lpItems.at(lpSeason->seasonNumber()+3-iMin)->setData(QVariant::fromValue(lpSeason), Qt::UserRole); for(int y = 0;y < lpSeason->episodeList().count();y++) @@ -850,11 +865,17 @@ void cMainWindow::setMovieStyle(QStandardItem* /*lpItem*/) void cMainWindow::displaySeries() { + QSettings settings; + bool bDisplaySeason0 = settings.value("displaySeason0", true).toBool(); + m_lpSeriesListModel->clear(); qint32 iMin = m_serieList.minSeason(); qint32 iMax = m_serieList.maxSeason(); + if(!iMin && !bDisplaySeason0) + iMin = 1; + qint32 iSeries = 0; qint32 iEpisodes = 0; @@ -863,7 +884,7 @@ void cMainWindow::displaySeries() QStringList header; header << "Nr" << "Serie" << "Year"; - for(int z = 0;z <= iMax;z++) + for(int z = iMin;z <= iMax;z++) header.append(QString("Season %1").arg(z)); m_lpSeriesListModel->setHorizontalHeaderLabels(header); @@ -896,7 +917,8 @@ void cMainWindow::displaySeries() for(int season = 0;season < seasonList.count();season++) { cSeason* lpSeason = seasonList.at(season); - lpItems.at(lpSeason->seasonNumber()+3-iMin)->setData(QVariant::fromValue(lpSeason), Qt::UserRole); + if(lpSeason->seasonNumber() || bDisplaySeason0) + lpItems.at(lpSeason->seasonNumber()+3-iMin)->setData(QVariant::fromValue(lpSeason), Qt::UserRole); } m_lpSeriesListModel->appendRow(lpItems); @@ -1111,10 +1133,10 @@ bool cMainWindow::runEdit(cSerie* lpSerie, QString& szDownload) lpEdit->setSerie(lpSerie); QSettings settings; - qint32 iX = settings.value("edit/x", QVariant::fromValue(-1)).toInt(); - qint32 iY = settings.value("edit/y", QVariant::fromValue(-1)).toInt(); - qint32 iWidth = settings.value("edit/width", QVariant::fromValue(-1)).toInt(); - qint32 iHeight = settings.value("edit/height", QVariant::fromValue(-1)).toInt(); + qint32 iX = settings.value("serieEdit/x", QVariant::fromValue(-1)).toInt(); + qint32 iY = settings.value("serieEdit/y", QVariant::fromValue(-1)).toInt(); + qint32 iWidth = settings.value("serieEdit/width", QVariant::fromValue(-1)).toInt(); + qint32 iHeight = settings.value("serieEdit/height", QVariant::fromValue(-1)).toInt(); if(iX != -1 && iY != -1) lpEdit->move(iX, iY); @@ -1125,14 +1147,14 @@ bool cMainWindow::runEdit(cSerie* lpSerie, QString& szDownload) qint32 ret = lpEdit->exec(); - settings.setValue("edit/width", QVariant::fromValue(lpEdit->size().width())); - settings.setValue("edit/height", QVariant::fromValue(lpEdit->size().height())); - settings.setValue("edit/x", QVariant::fromValue(lpEdit->x())); - settings.setValue("edit/y", QVariant::fromValue(lpEdit->y())); + settings.setValue("serieEdit/width", QVariant::fromValue(lpEdit->size().width())); + settings.setValue("serieEdit/height", QVariant::fromValue(lpEdit->size().height())); + settings.setValue("serieEdit/x", QVariant::fromValue(lpEdit->x())); + settings.setValue("serieEdit/y", QVariant::fromValue(lpEdit->y())); if(this->isMaximized()) - settings.setValue("edit/maximized", QVariant::fromValue(true)); + settings.setValue("serieEdit/maximized", QVariant::fromValue(true)); else - settings.setValue("edit/maximized", QVariant::fromValue(false)); + settings.setValue("serieEdit/maximized", QVariant::fromValue(false)); if(ret == QDialog::Rejected) { @@ -1226,13 +1248,13 @@ void cMainWindow::onActionAddGlobal() void cMainWindow::onActionAdd() { - cSearch* lpSearch = new cSearch(this); + cSearch* lpSearch = new cSearch(m_serieList, this); QSettings settings; - qint32 iX = settings.value("search/x", QVariant::fromValue(-1)).toInt(); - qint32 iY = settings.value("search/y", QVariant::fromValue(-1)).toInt(); - qint32 iWidth = settings.value("search/width", QVariant::fromValue(-1)).toInt(); - qint32 iHeight = settings.value("search/height", QVariant::fromValue(-1)).toInt(); + qint32 iX = settings.value("serieSearch/x", QVariant::fromValue(-1)).toInt(); + qint32 iY = settings.value("serieSearch/y", QVariant::fromValue(-1)).toInt(); + qint32 iWidth = settings.value("serieSearch/width", QVariant::fromValue(-1)).toInt(); + qint32 iHeight = settings.value("serieSearch/height", QVariant::fromValue(-1)).toInt(); if(iX != -1 && iY != -1) lpSearch->move(iX, iY); @@ -1245,10 +1267,10 @@ void cMainWindow::onActionAdd() return; } - settings.setValue("search/width", QVariant::fromValue(lpSearch->size().width())); - settings.setValue("search/height", QVariant::fromValue(lpSearch->size().height())); - settings.setValue("search/x", QVariant::fromValue(lpSearch->x())); - settings.setValue("search/y", QVariant::fromValue(lpSearch->y())); + settings.setValue("serieSearch/width", QVariant::fromValue(lpSearch->size().width())); + settings.setValue("serieSearch/height", QVariant::fromValue(lpSearch->size().height())); + settings.setValue("serieSearch/x", QVariant::fromValue(lpSearch->x())); + settings.setValue("serieSearch/y", QVariant::fromValue(lpSearch->y())); qint32 id = lpSearch->id(); QString szPlaceholder = lpSearch->placeholderName(); @@ -1322,7 +1344,7 @@ void cMainWindow::onActionAdd() void cMainWindow::onActionMovieAdd() { - cMovieSearch* lpSearch = new cMovieSearch(this); + cMovieSearch* lpSearch = new cMovieSearch(m_movieList, this); QSettings settings; qint32 iX = settings.value("movieSearch/x", QVariant::fromValue(-1)).toInt(); @@ -1560,6 +1582,26 @@ void cMainWindow::onActionExport() QMessageBox::information(this, "Export", "export done"); } +void cMainWindow::onActionPreferences() +{ + cPreferences* lpPreferencesDialog = new cPreferences(this); + + if(lpPreferencesDialog->exec() == QDialog::Rejected) + { + delete lpPreferencesDialog; + return; + } + + if(lpPreferencesDialog->displaySeason0Changed()) + { + delete lpPreferencesDialog; + displaySeries(); + return; + } + + delete lpPreferencesDialog; +} + void cMainWindow::doUpdate(cSerieList& serieList) { if(serieList.count()) @@ -2149,13 +2191,13 @@ void cMainWindow::applySeriesFilter() { QSettings settings; - settings.setValue("seriesFilter/enabled", QVariant::fromValue(ui->m_lpSeriesFilter->isChecked())); - settings.setValue("seriesFilter/hasInit", ui->m_lpSeriesFilterInitialized->checkState()); - settings.setValue("seriesFilter/hasProgress", ui->m_lpSeriesFilterProgress->checkState()); - settings.setValue("seriesFilter/hasDone", ui->m_lpSeriesFilterDone->checkState()); - settings.setValue("seriesFilter/hasLink", ui->m_lpSeriesFilterWithLink->checkState()); - settings.setValue("seriesFilter/hasNotFinished", ui->m_lpSeriesFilterNotFinished->checkState()); - settings.setValue("seriesFilter/isCliffhanger", ui->m_lpSeriesFilterCliffhanger->checkState()); + settings.setValue("serieFilter/enabled", QVariant::fromValue(ui->m_lpSeriesFilter->isChecked())); + settings.setValue("serieFilter/hasInit", ui->m_lpSeriesFilterInitialized->checkState()); + settings.setValue("serieFilter/hasProgress", ui->m_lpSeriesFilterProgress->checkState()); + settings.setValue("serieFilter/hasDone", ui->m_lpSeriesFilterDone->checkState()); + settings.setValue("serieFilter/hasLink", ui->m_lpSeriesFilterWithLink->checkState()); + settings.setValue("serieFilter/hasNotFinished", ui->m_lpSeriesFilterNotFinished->checkState()); + settings.setValue("serieFilter/isCliffhanger", ui->m_lpSeriesFilterCliffhanger->checkState()); for(int x = 0;x < m_lpSeriesListModel->rowCount();x++) { diff --git a/cmainwindow.h b/cmainwindow.h index 759f154..f90d8b6 100644 --- a/cmainwindow.h +++ b/cmainwindow.h @@ -44,7 +44,7 @@ public: \fn cMainWindow \param parent */ - explicit cMainWindow(QWidget *parent = 0); + explicit cMainWindow(QWidget *parent = nullptr); /*! \brief @@ -276,6 +276,12 @@ private slots: \fn onActionExport */ void onActionExport(); + /*! + \brief + + \fn onActionPreferences + */ + void onActionPreferences(); /*! \brief @@ -472,6 +478,7 @@ private: QMenu* m_lpFileMenu; /*!< TODO: describe */ QAction* m_lpFileExportAction; /*!< TODO: describe */ + QAction* m_lpFilePreferencesAction; /*!< TODO: describe */ QAction* m_lpFileExitAction; /*!< TODO: describe */ /*! diff --git a/cmoviediscover.cpp b/cmoviediscover.cpp index 2af3e00..ed40acf 100644 --- a/cmoviediscover.cpp +++ b/cmoviediscover.cpp @@ -90,7 +90,7 @@ void cMovieDiscover::on_m_lpDiscover_clicked() setCursor(Qt::WaitCursor); cTheMovieDBV3 movieDB3; - QList movieList = movieDB3.discoverMovie(szText, bAdult, iYear, genres, voteMin, voteMax, "de-DE"); + QList movieList = movieDB3.discoverMovie(m_movieList, szText, bAdult, iYear, genres, voteMin, voteMax, "de-DE"); m_lpMoviesModel->clear(); @@ -101,8 +101,6 @@ void cMovieDiscover::on_m_lpDiscover_clicked() { cMovie* lpMovie = movieList[x]; - if(m_movieList.find(lpMovie->movieID())) - continue; QList items; items.append(new QStandardItem(lpMovie->movieTitle())); diff --git a/cmoviediscover.h b/cmoviediscover.h index 25de70e..2e1a6f6 100644 --- a/cmoviediscover.h +++ b/cmoviediscover.h @@ -29,7 +29,7 @@ public: \param movieList \param parent */ - explicit cMovieDiscover(const cMovieList movieList, QWidget *parent = 0); + explicit cMovieDiscover(const cMovieList movieList, QWidget *parent = nullptr); /*! \brief @@ -73,7 +73,7 @@ private slots: \fn on_m_lpMovies_clicked \param index */ - void on_m_lpMovies_clicked(const QModelIndex &index); + void on_m_lpMovies_clicked(const QModelIndex &index); private: Ui::cMovieDiscover* ui; /*!< TODO: describe */ diff --git a/cmoviesearch.cpp b/cmoviesearch.cpp index 1f5977e..83ac966 100644 --- a/cmoviesearch.cpp +++ b/cmoviesearch.cpp @@ -9,10 +9,11 @@ #include -cMovieSearch::cMovieSearch(QWidget *parent) : +cMovieSearch::cMovieSearch(const cMovieList& movieList, QWidget *parent) : QDialog(parent), ui(new Ui::cMovieSearch), - m_lpResultsModel(0) + m_lpResultsModel(nullptr), + m_movieList(movieList) { ui->setupUi(this); ui->m_lpSearchButton->setEnabled(false); @@ -64,7 +65,7 @@ void cMovieSearch::on_m_lpSearchButton_clicked() } } - QList movieList = theMovieDBV3.searchMovie(szSearchText, iYear, "de-DE"); + QList movieList = theMovieDBV3.searchMovie(m_movieList, szSearchText, iYear, "de-DE"); m_lpResultsModel->clear(); QStringList headerLabels = QStringList() << tr("Title") << tr("Year"); diff --git a/cmoviesearch.h b/cmoviesearch.h index eb96bf8..b665979 100644 --- a/cmoviesearch.h +++ b/cmoviesearch.h @@ -5,6 +5,8 @@ #include #include +#include "cmovie.h" + namespace Ui { class cMovieSearch; @@ -26,7 +28,7 @@ public: \fn cMovieSearch \param parent */ - explicit cMovieSearch(QWidget *parent = 0); + explicit cMovieSearch(const cMovieList& movieList, QWidget *parent = nullptr); /*! \brief @@ -101,11 +103,11 @@ private slots: \param index */ void on_m_lpResults_clicked(const QModelIndex &index); -// void on_m_lpResults_doubleClicked(const QModelIndex &index); private: Ui::cMovieSearch* ui; /*!< TODO: describe */ QStandardItemModel* m_lpResultsModel; + cMovieList m_movieList; /*!< TODO: describe */ /*! \brief diff --git a/cpreferences.cpp b/cpreferences.cpp new file mode 100644 index 0000000..a33931c --- /dev/null +++ b/cpreferences.cpp @@ -0,0 +1,74 @@ +#include "cpreferences.h" +#include "ui_cpreferences.h" + +#include +#include +#include + + +cPreferences::cPreferences(QWidget *parent) : + QDialog(parent), + ui(new Ui::cPreferences) +{ + ui->setupUi(this); + + QSettings settings; + + ui->m_lpExportSeries->setChecked(settings.value("exportSerie", QDir::homePath()).toBool()); + ui->m_lpExportMovies->setChecked(settings.value("exportMovie", QDir::homePath()).toBool()); + ui->m_lpSeriesPath->setText(settings.value("exportSeriePath", QString("%1%2series.xml").arg(QDir::homePath()).arg(QDir::separator())).toString()); + ui->m_lpMoviesPath->setText(settings.value("exportMoviePath", QString("%1%2movies.xml").arg(QDir::homePath()).arg(QDir::separator())).toString()); + + ui->m_lpDiscoverResultsSerie->setValue(settings.value("serieDiscover/results", 100).toInt()); + ui->m_lpSearchResultsSerie->setValue(settings.value("serieSearch/results", 100).toInt()); + ui->m_lpDiscoverResultsMovie->setValue(settings.value("movieDiscover/results", 100).toInt()); + ui->m_lpSearchResultsMovie->setValue(settings.value("movieSearch/results", 100).toInt()); + + ui->m_lpDisplaySeason0->setChecked(settings.value("displaySeason0", true).toBool()); + + m_bDisplaySeason0 = settings.value("displaySeason0", true).toBool(); +} + +cPreferences::~cPreferences() +{ + QSettings settings; + + settings.setValue("exportSeriePath", ui->m_lpSeriesPath->text()); + settings.setValue("exportMoviePath", ui->m_lpMoviesPath->text()); + settings.setValue("exportSerie", ui->m_lpExportSeries->isChecked()); + settings.setValue("exportMovie", ui->m_lpExportMovies->isChecked()); + + settings.setValue("serieDiscover/results", ui->m_lpDiscoverResultsSerie->value()); + settings.setValue("serieSearch/results", ui->m_lpSearchResultsSerie->value()); + settings.setValue("movieDiscover/results", ui->m_lpDiscoverResultsMovie->value()); + settings.setValue("movieSearch/results", ui->m_lpSearchResultsMovie->value()); + + settings.setValue("displaySeason0", ui->m_lpDisplaySeason0->isChecked()); + + delete ui; +} + +bool cPreferences::displaySeason0Changed() +{ + return(m_bDisplaySeason0 != ui->m_lpDisplaySeason0->isChecked()); +} + +void cPreferences::on_m_lpSeriesPathSelect_clicked() +{ + QString szFile = QFileDialog::getSaveFileName(this, tr("export Serie"), ui->m_lpSeriesPath->text(), tr("XML Files (*.xml)")); + + if(szFile.isEmpty()) + return; + + ui->m_lpSeriesPath->setText(szFile); +} + +void cPreferences::on_m_lpMoviesPathSelect_clicked() +{ + QString szFile = QFileDialog::getSaveFileName(this, tr("export Serie"), ui->m_lpMoviesPath->text(), tr("XML Files (*.xml)")); + + if(szFile.isEmpty()) + return; + + ui->m_lpMoviesPath->setText(szFile); +} diff --git a/cpreferences.h b/cpreferences.h new file mode 100644 index 0000000..cd0496c --- /dev/null +++ b/cpreferences.h @@ -0,0 +1,29 @@ +#ifndef CPREFERENCES_H +#define CPREFERENCES_H + +#include + +namespace Ui { +class cPreferences; +} + +class cPreferences : public QDialog +{ + Q_OBJECT + +public: + explicit cPreferences(QWidget *parent = nullptr); + ~cPreferences(); + + bool displaySeason0Changed(); +private slots: + void on_m_lpSeriesPathSelect_clicked(); + + void on_m_lpMoviesPathSelect_clicked(); + +private: + Ui::cPreferences* ui; + bool m_bDisplaySeason0; +}; + +#endif // CPREFERENCES_H diff --git a/cpreferences.ui b/cpreferences.ui new file mode 100644 index 0000000..5fc4f05 --- /dev/null +++ b/cpreferences.ui @@ -0,0 +1,207 @@ + + + cPreferences + + + + 0 + 0 + 494 + 317 + + + + Preferences + + + + + + + + General + + + + + + + Series + + + + + + + + + + + ... + + + + + + + number of discover results + + + + + + + enable export + + + true + + + + + + + 9999 + + + + + + + display season "0" + + + true + + + + + + + number of search results + + + + + + + 9999 + + + + + + + + + + + + Movies + + + + + + + + enable export + + + true + + + + + + + number of discover results + + + + + + + 9999 + + + + + + + ... + + + + + + + + + + number of search results + + + + + + + 9999 + + + + + + + + + + + + Qt::Horizontal + + + QDialogButtonBox::Cancel|QDialogButtonBox::Ok + + + + + + + + + + + buttonBox + accepted() + cPreferences + accept() + + + 248 + 254 + + + 157 + 274 + + + + + buttonBox + rejected() + cPreferences + reject() + + + 316 + 260 + + + 286 + 274 + + + + + diff --git a/csearch.cpp b/csearch.cpp index a6f84b4..fcce4d0 100644 --- a/csearch.cpp +++ b/csearch.cpp @@ -9,10 +9,11 @@ #include -cSearch::cSearch(QWidget *parent) : +cSearch::cSearch(const cSerieList& serieList, QWidget *parent) : QDialog(parent), ui(new Ui::cSearch), - m_lpResultsModel(0) + m_lpResultsModel(nullptr), + m_serieList(serieList) { ui->setupUi(this); ui->m_lpSearchButton->setEnabled(false); @@ -51,7 +52,7 @@ void cSearch::on_m_lpSearchButton_clicked() cTheMovieDBV3 theMovieDBV3; - QList serieList3 = theMovieDBV3.searchSerie(ui->m_lpSearch->text(), -1, "de-DE"); + QList serieList3 = theMovieDBV3.searchSerie(m_serieList, ui->m_lpSearch->text(), -1, "de-DE"); m_lpResultsModel->clear(); diff --git a/csearch.h b/csearch.h index 9fa49e6..910e369 100644 --- a/csearch.h +++ b/csearch.h @@ -5,6 +5,8 @@ #include #include +#include "cserie.h" + namespace Ui { class cSearch; @@ -26,7 +28,7 @@ public: \fn cSearch \param parent */ - explicit cSearch(QWidget *parent = 0); + explicit cSearch(const cSerieList& serieList, QWidget *parent = 0); /*! \brief @@ -112,6 +114,7 @@ private slots: private: Ui::cSearch* ui; /*!< TODO: describe */ QStandardItemModel* m_lpResultsModel; + cSerieList m_serieList; /*!< TODO: describe */ /*! \brief diff --git a/cseasondelegate.cpp b/cseasondelegate.cpp index 5d3bd20..b40d5c5 100644 --- a/cseasondelegate.cpp +++ b/cseasondelegate.cpp @@ -27,7 +27,7 @@ void cSeasonDelegate::paint(QPainter *painter, const QStyleOptionViewItem &optio { if(index.column() > 2) { - cSeason* lpSeason = 0; + cSeason* lpSeason = nullptr; if(index.data(Qt::UserRole).canConvert()) lpSeason = qvariant_cast(index.data(Qt::UserRole)); @@ -107,13 +107,10 @@ QSize cSeasonDelegate::sizeHint(const QStyleOptionViewItem &option, const QModel } if(iTotal > 0 && lpSeason->seasonNumber() != 0) return(QSize((iTotal+1)*FIELD_STEP, HEIGHT)); - //return(QSize((iTotal+1)*FIELD_STEP, FIELD_HEIGHT)); else return(QSize(FIELD_STEP*40, HEIGHT)); - //return(QSize(FIELD_STEP*40, FIELD_HEIGHT)); } return(QSize(FIELD_STEP, HEIGHT)); - //return(QSize(FIELD_STEP, FIELD_HEIGHT)); } return QSize(QStyledItemDelegate::sizeHint(option, index).width(), HEIGHT); } diff --git a/cseasondelegate.h b/cseasondelegate.h index b302c68..0b19767 100644 --- a/cseasondelegate.h +++ b/cseasondelegate.h @@ -15,7 +15,7 @@ class cSeasonDelegate : public QStyledItemDelegate Q_OBJECT public: - cSeasonDelegate(QWidget *parent = 0) : QStyledItemDelegate(parent) {} + cSeasonDelegate(QWidget *parent = nullptr) : QStyledItemDelegate(parent) {} /*! \brief @@ -35,9 +35,6 @@ public: \return QSize */ QSize sizeHint(const QStyleOptionViewItem &option, const QModelIndex &index) const Q_DECL_OVERRIDE; - //QWidget* createEditor(QWidget *parent, const QStyleOptionViewItem &option, const QModelIndex &index) const Q_DECL_OVERRIDE; - //void setEditorData(QWidget *editor, const QModelIndex &index) const Q_DECL_OVERRIDE; - //void setModelData(QWidget *editor, QAbstractItemModel *model, const QModelIndex &index) const Q_DECL_OVERRIDE; }; #endif // CSEASONDELEGATE_H diff --git a/cthemoviedbv3.cpp b/cthemoviedbv3.cpp index e6ef4f2..9056c23 100644 --- a/cthemoviedbv3.cpp +++ b/cthemoviedbv3.cpp @@ -12,6 +12,8 @@ #include +#include + cTheMovieDBV3::cTheMovieDBV3() { @@ -22,7 +24,7 @@ cTheMovieDBV3::~cTheMovieDBV3() { } -QList cTheMovieDBV3::searchMovie(const QString& szMovie, const qint32& year, const QString& szLanguage) +QList cTheMovieDBV3::searchMovie(cMovieList& movieListOri, const QString& szMovie, const qint32& year, const QString& szLanguage) { if(m_genres.isEmpty()) m_genres = genresMovie("de-DE"); @@ -31,6 +33,8 @@ QList cTheMovieDBV3::searchMovie(const QString& szMovie, const qint32& QNetworkAccessManager networkManager; QString szRequest = QString("https://api.themoviedb.org/3/search/movie?api_key=%1").arg(m_szToken); qint32 page = 1; + QSettings settings; + qint32 iResults = settings.value("movieSearch/results", 100).toInt(); if(!szLanguage.contains("all")) szRequest.append(QString("&language=%1").arg(szLanguage)); @@ -62,6 +66,10 @@ QList cTheMovieDBV3::searchMovie(const QString& szMovie, const qint32& for(int z = 0;z < jsonArray.count();z++) { QJsonObject movie = jsonArray[z].toObject(); + + if(movieListOri.find(movie["id"].toInt())) + continue; + cMovie* lpMovie = new cMovie; lpMovie->setMovieTitle(movie["title"].toString()); lpMovie->setMovieID(movie["id"].toInt()); @@ -86,12 +94,16 @@ QList cTheMovieDBV3::searchMovie(const QString& szMovie, const qint32& lpMovie->setReleaseDate(movie["release_date"].toString()); movieList.append(lpMovie); + + if(movieList.count() >= iResults) + break; } if(jsonObj["total_pages"].toInt() == page) break; page++; - if(page > 20) + + if(movieList.count() >= iResults) break; delete reply; @@ -105,12 +117,14 @@ QList cTheMovieDBV3::searchMovie(const QString& szMovie, const qint32& return(movieList); } -QList cTheMovieDBV3::searchSerie(const QString& szSerie, const qint32& year, const QString& szLanguage) +QList cTheMovieDBV3::searchSerie(cSerieList& serieListOri, const QString& szSerie, const qint32& year, const QString& szLanguage) { QList serieList; QNetworkAccessManager networkManager; QString szRequest = QString("https://api.themoviedb.org/3/search/tv?api_key=%1").arg(m_szToken); qint32 page = 1; + QSettings settings; + qint32 iResults = settings.value("serieSearch/results", 100).toInt(); if(!szLanguage.contains("all")) szRequest.append(QString("&language=%1").arg(szLanguage)); @@ -144,6 +158,10 @@ QList cTheMovieDBV3::searchSerie(const QString& szSerie, const qint32& for(int z = 0;z < jsonArray.count();z++) { QJsonObject serie = jsonArray[z].toObject(); + + if(serieListOri.find(serie["id"].toInt())) + continue; + cSerie* lpSerie = new cSerie; lpSerie->setSeriesID(serie["id"].toInt()); @@ -195,12 +213,16 @@ QList cTheMovieDBV3::searchSerie(const QString& szSerie, const qint32& lpSerie->setVoteCount(serie["vote_count"].toInt()); serieList.append(lpSerie); + + if(serieList.count() >= iResults) + break; } if(jsonObj["total_pages"].toInt() == page) break; page++; - if(page > 20) + + if(serieList.count() >= iResults) break; delete reply; @@ -637,7 +659,7 @@ QMap cTheMovieDBV3::genresMovie(const QString& szLanguage) return(genres); } -QList cTheMovieDBV3::discoverMovie(const QString& szText, const bool& bAdult, const qint32& iYear, const QList& genres, const qreal& voteMin, const qreal& voteMax, const QString& szLanguage) +QList cTheMovieDBV3::discoverMovie(cMovieList& movieListOri, const QString& szText, const bool& bAdult, const qint32& iYear, const QList& genres, const qreal& voteMin, const qreal& voteMax, const QString& szLanguage) { if(m_genres.isEmpty()) m_genres = genresMovie("de-DE"); @@ -646,6 +668,8 @@ QList cTheMovieDBV3::discoverMovie(const QString& szText, const bool& b QNetworkAccessManager networkManager; QString szRequest = QString("https://api.themoviedb.org/3/discover/movie?api_key=%1").arg(m_szToken); qint32 page = 1; + QSettings settings; + qint32 iResults = settings.value("movieDiscover/results", 100).toInt(); if(!szLanguage.contains("all")) szRequest.append(QString("&language=%1").arg(szLanguage)); @@ -687,6 +711,10 @@ QList cTheMovieDBV3::discoverMovie(const QString& szText, const bool& b for(int z = 0;z < jsonArray.count();z++) { QJsonObject movie = jsonArray[z].toObject(); + + if(movieListOri.find(movie["id"].toInt())) + continue; + cMovie* lpMovie = new cMovie; lpMovie->setMovieTitle(movie["title"].toString()); lpMovie->setMovieID(movie["id"].toInt()); @@ -711,12 +739,16 @@ QList cTheMovieDBV3::discoverMovie(const QString& szText, const bool& b lpMovie->setReleaseDate(movie["release_date"].toString()); movieList.append(lpMovie); + + if(movieList.count() >= iResults) + break; } if(jsonObj["total_pages"].toInt() == page) break; page++; - if(page > 20) + + if(movieList.count() >= iResults) break; delete reply; @@ -845,7 +877,7 @@ void cTheMovieDBV3::loadCastMovie(cMovie* lpMovie) } } -QList cTheMovieDBV3::discoverSerie(const QString& szText, const qint32& iYear, const QList& genres, const qreal& voteMin, const qreal& voteMax, const QString& szLanguage) +QList cTheMovieDBV3::discoverSerie(cSerieList& serieListOri, const QString& szText, const qint32& iYear, const QList& genres, const qreal& voteMin, const qreal& voteMax, const QString& szLanguage) { if(m_genres.isEmpty()) m_genres = genresMovie("de-DE"); @@ -854,6 +886,8 @@ QList cTheMovieDBV3::discoverSerie(const QString& szText, const qint32& QNetworkAccessManager networkManager; QString szRequest = QString("https://api.themoviedb.org/3/discover/tv?api_key=%1").arg(m_szToken); qint32 page = 1; + QSettings settings; + qint32 iResults = settings.value("serieDiscover/results", 100).toInt(); if(!szLanguage.contains("all")) szRequest.append(QString("&language=%1").arg(szLanguage)); @@ -895,6 +929,10 @@ QList cTheMovieDBV3::discoverSerie(const QString& szText, const qint32& for(int z = 0;z < jsonArray.count();z++) { QJsonObject serie = jsonArray[z].toObject(); + + if(serieListOri.find(serie["id"].toInt())) + continue; + cSerie* lpSerie = new cSerie; lpSerie->setSeriesID(serie["id"].toInt()); @@ -946,12 +984,16 @@ QList cTheMovieDBV3::discoverSerie(const QString& szText, const qint32& lpSerie->setVoteCount(serie["vote_count"].toInt()); serieList.append(lpSerie); + + if(serieList.count() >= iResults) + break; } if(jsonObj["total_pages"].toInt() == page) break; page++; - if(page > 20) + + if(serieList.count() >= iResults) break; delete reply; diff --git a/cthemoviedbv3.h b/cthemoviedbv3.h index e7699f1..7bec555 100644 --- a/cthemoviedbv3.h +++ b/cthemoviedbv3.h @@ -36,7 +36,7 @@ public: \param szLanguage \return QList */ - QList searchMovie(const QString& szMovie, const qint32& year = -1, const QString& szLanguage = "all"); + QList searchMovie(cMovieList& movieListOri, const QString& szMovie, const qint32& year = -1, const QString& szLanguage = "all"); /*! \brief @@ -67,7 +67,7 @@ public: \param szLanguage \return QList */ - QList discoverMovie(const QString& szText, const bool& bAdult, const qint32& iYear, const QList& genres, const qreal& voteMin, const qreal& voteMax, const QString& szLanguage = "all"); + QList discoverMovie(cMovieList& movieListOri, const QString& szText, const bool& bAdult, const qint32& iYear, const QList& genres, const qreal& voteMin, const qreal& voteMax, const QString& szLanguage = "all"); /*! \brief @@ -85,7 +85,7 @@ public: \param szLanguage \return QList */ - QList searchSerie(const QString& szSerie, const qint32& year = -1, const QString& szLanguage = "all"); + QList searchSerie(cSerieList& serieListOri, const QString& szSerie, const qint32& year = -1, const QString& szLanguage = "all"); /*! \brief @@ -123,7 +123,7 @@ public: \param szLanguage \return QList */ - QList discoverSerie(const QString& szText, const qint32& iYear, const QList& genres, const qreal& voteMin, const qreal& voteMax, const QString& szLanguage = "all"); + QList discoverSerie(cSerieList& serieListOri, const QString& szText, const qint32& iYear, const QList& genres, const qreal& voteMin, const qreal& voteMax, const QString& szLanguage = "all"); /*! \brief diff --git a/main.cpp b/main.cpp index fa7eb50..5eedcb4 100644 --- a/main.cpp +++ b/main.cpp @@ -14,7 +14,7 @@ int main(int argc, char *argv[]) QCoreApplication::setOrganizationName("WIN-DESIGN"); QCoreApplication::setOrganizationDomain("windesign.at"); - QCoreApplication::setApplicationName("qtMovies"); + QCoreApplication::setApplicationName("qtMultimediaDB"); QSettings settings; diff --git a/qtMultimediaDB.pro b/qtMultimediaDB.pro index c6eaa21..8d649e6 100644 --- a/qtMultimediaDB.pro +++ b/qtMultimediaDB.pro @@ -48,7 +48,8 @@ SOURCES += main.cpp\ cseriedetails.cpp \ ctheaudiodbv1.cpp \ cartist.cpp \ - csplashscreen.cpp + csplashscreen.cpp \ + cpreferences.cpp HEADERS += cmainwindow.h \ cserie.h \ @@ -86,7 +87,8 @@ HEADERS += cmainwindow.h \ cseriedetails.h \ ctheaudiodbv1.h \ cartist.h \ - csplashscreen.h + csplashscreen.h \ + cpreferences.h FORMS += cmainwindow.ui \ csearch.ui \ @@ -101,7 +103,8 @@ FORMS += cmainwindow.ui \ cdiscover.ui \ cmoviediscover.ui \ cmoviedetails.ui \ - cseriedetails.ui + cseriedetails.ui \ + cpreferences.ui DISTFILES += \ Doxyfile \