From fa3c115a89473663f4e4d9e7dd1b12176fcace08 Mon Sep 17 00:00:00 2001 From: birkeh Date: Thu, 27 Oct 2016 20:01:37 +0200 Subject: [PATCH] Init --- ckodivideolibrary.cpp | 2 +- cmyvideos.cpp | 185 ++++++++++++++- cmyvideos.h | 64 +++-- cvideowidget.cpp | 30 +++ cvideowidget.ui | 530 +++++++++++++++++++++++++++++++++++++++++- 5 files changed, 780 insertions(+), 31 deletions(-) diff --git a/ckodivideolibrary.cpp b/ckodivideolibrary.cpp index 3fcb0d2..ff460ec 100644 --- a/ckodivideolibrary.cpp +++ b/ckodivideolibrary.cpp @@ -129,7 +129,7 @@ qint32 cKodiVideoLibrary::load() query.value("c10").toString(), query.value("c11").toInt(), query.value("c12").toString(), - query.value("c13").toString(), + query.value("c13").toInt(), query.value("c14").toString(), query.value("c15").toString(), query.value("c16").toString(), diff --git a/cmyvideos.cpp b/cmyvideos.cpp index 1fcb21b..bd824bf 100644 --- a/cmyvideos.cpp +++ b/cmyvideos.cpp @@ -5,7 +5,7 @@ cMyVideosValues::cMyVideosValues() : m_idMovie(-1), m_idFile(-1), m_szLocalMovieTitle("UNSET"), m_szMoviePlot("UNSET"), m_szMoviePlotOutline("UNSET"), m_szMovieTagline("UNSET"), m_iRatingVotes(-1), m_dRating(-1), m_szWriters("UNSET"), m_iYearReleased(-1), m_szThumbnails("UNSET"), m_szIMDBID("UNSET"), m_szTitleFormattedForSorting("UNSET"), m_iRuntime(-1), - m_szMPAARating("UNSET"), m_szIMDBTop250Ranking("UNSET"), m_szGenre("UNSET"), m_szDirector("UNSET"), m_szOriginalMovieTitle("UNSET"), + m_szMPAARating("UNSET"), m_iIMDBTop250Ranking(-1), m_szGenre("UNSET"), m_szDirector("UNSET"), m_szOriginalMovieTitle("UNSET"), m_szStudio("UNSET"), m_szTrailerURL("UNSET"), m_szFanartURLs("UNSET"), m_szCountry("UNSET"), m_szFilePath("UNSET"), m_idPath(-1), m_idSet(-1), m_iUserrating(-1), m_szSet("UNSET"), m_szSetOverview("UNSET"), m_szFileName("UNSET"), m_szPathURL("UNSET"), m_iPlayCount(-1), m_dResumeTimeInSeconds(-1), m_dTotalTimeInSeconds(-1) @@ -15,7 +15,7 @@ cMyVideosValues::cMyVideosValues() : cMyVideosValues::cMyVideosValues(qint32 idMovie, qint32 idFile, const QString& szLocalMovieTitle, const QString& szMoviePlot, const QString& szMoviePlotOutline, const QString& szMovieTagline, qint32 iRatingVotes, qreal dRating, const QString& szWriters, qint32 iYearReleased, const QString& szThumbnails, const QString& szIMDBID, const QString& szTitleFormattedForSorting, qint32 iRuntime, - const QString& szMPAARating, const QString& szIMDBTop250Ranking, const QString& szGenre, const QString& szDirector, + const QString& szMPAARating, qint32 iIMDBTop250Ranking, const QString& szGenre, const QString& szDirector, const QString& szOriginalMovieTitle, const QString& szStudio, const QString& szTrailerURL, const QString& szFanartURLs, const QString& szCountry, const QString& szFilePath, qint32 idPath, qint32 idSet, qint32 iUserrating, const QString& szSet, const QString& szSetOverview, const QString& szFileName, const QString& szPathURL, qint32 iPlayCount, const QDateTime& lastPlayed, const QDateTime& dateAdded, @@ -23,7 +23,7 @@ cMyVideosValues::cMyVideosValues(qint32 idMovie, qint32 idFile, const QString& s m_idMovie(idMovie), m_idFile(idFile), m_szLocalMovieTitle(szLocalMovieTitle), m_szMoviePlot(szMoviePlot), m_szMoviePlotOutline(szMoviePlotOutline), m_szMovieTagline(szMovieTagline), m_iRatingVotes(iRatingVotes), m_dRating(dRating), m_szWriters(szWriters), m_iYearReleased(iYearReleased), m_szThumbnails(szThumbnails), m_szIMDBID(szIMDBID), m_szTitleFormattedForSorting(szTitleFormattedForSorting), m_iRuntime(iRuntime), - m_szMPAARating(szMPAARating), m_szIMDBTop250Ranking(szIMDBTop250Ranking), m_szGenre(szGenre), m_szDirector(szDirector), m_szOriginalMovieTitle(szOriginalMovieTitle), + m_szMPAARating(szMPAARating), m_iIMDBTop250Ranking(iIMDBTop250Ranking), m_szGenre(szGenre), m_szDirector(szDirector), m_szOriginalMovieTitle(szOriginalMovieTitle), m_szStudio(szStudio), m_szTrailerURL(szTrailerURL), m_szFanartURLs(szFanartURLs), m_szCountry(szCountry), m_szFilePath(szFilePath), m_idPath(idPath), m_idSet(idSet), m_iUserrating(iUserrating), m_szSet(szSet), m_szSetOverview(szSetOverview), m_szFileName(szFileName), m_szPathURL(szPathURL), m_iPlayCount(iPlayCount), m_lastPlayed(lastPlayed), m_dateAdded(dateAdded), m_dResumeTimeInSeconds(dResumeTimeInSeconds), m_dTotalTimeInSeconds(dTotalTimeInSeconds) @@ -33,7 +33,7 @@ cMyVideosValues::cMyVideosValues(qint32 idMovie, qint32 idFile, const QString& s void cMyVideosValues::set(qint32 idMovie, qint32 idFile, const QString& szLocalMovieTitle, const QString& szMoviePlot, const QString& szMoviePlotOutline, const QString& szMovieTagline, qint32 iRatingVotes, qreal dRating, const QString& szWriters, qint32 iYearReleased, const QString& szThumbnails, const QString& szIMDBID, const QString& szTitleFormattedForSorting, qint32 iRuntime, - const QString& szMPAARating, const QString& szIMDBTop250Ranking, const QString& szGenre, const QString& szDirector, + const QString& szMPAARating, qint32 iIMDBTop250Ranking, const QString& szGenre, const QString& szDirector, const QString& szOriginalMovieTitle, const QString& szStudio, const QString& szTrailerURL, const QString& szFanartURLs, const QString& szCountry, const QString& szFilePath, qint32 idPath, qint32 idSet, qint32 iUserrating, const QString& szSet, const QString& szSetOverview, const QString& szFileName, const QString& szPathURL, qint32 iPlayCount, const QDateTime& lastPlayed, const QDateTime& dateAdded, @@ -54,7 +54,7 @@ void cMyVideosValues::set(qint32 idMovie, qint32 idFile, const QString& szLocalM m_szTitleFormattedForSorting = szTitleFormattedForSorting; m_iRuntime = iRuntime; m_szMPAARating = szMPAARating; - m_szIMDBTop250Ranking = szIMDBTop250Ranking; + m_iIMDBTop250Ranking = iIMDBTop250Ranking; m_szGenre = szGenre; m_szDirector = szDirector; m_szOriginalMovieTitle = szOriginalMovieTitle; @@ -94,7 +94,7 @@ inline bool cMyVideosValues::operator==(const cMyVideosValues b) const if(m_szTitleFormattedForSorting != b.m_szTitleFormattedForSorting) return(false); if(m_iRuntime != b.m_iRuntime) return(false); if(m_szMPAARating != b.m_szMPAARating) return(false); - if(m_szIMDBTop250Ranking != b.m_szIMDBTop250Ranking) return(false); + if(m_iIMDBTop250Ranking != b.m_iIMDBTop250Ranking) return(false); if(m_szGenre != b.m_szGenre) return(false); if(m_szDirector != b.m_szDirector) return(false); if(m_szOriginalMovieTitle != b.m_szOriginalMovieTitle) return(false); @@ -135,7 +135,7 @@ inline bool cMyVideosValues::operator!=(const cMyVideosValues b) const || m_szTitleFormattedForSorting != b.m_szTitleFormattedForSorting || m_iRuntime != b.m_iRuntime || m_szMPAARating != b.m_szMPAARating - || m_szIMDBTop250Ranking != b.m_szIMDBTop250Ranking + || m_iIMDBTop250Ranking != b.m_iIMDBTop250Ranking || m_szGenre != b.m_szGenre || m_szDirector != b.m_szDirector || m_szOriginalMovieTitle != b.m_szOriginalMovieTitle @@ -163,13 +163,13 @@ inline bool cMyVideosValues::operator!=(const cMyVideosValues b) const cMyVideos::cMyVideos(qint32 idMovie, qint32 idFile, const QString& szLocalMovieTitle, const QString& szMoviePlot, const QString& szMoviePlotOutline, const QString& szMovieTagline, qint32 iRatingVotes, qreal dRating, const QString& szWriters, qint32 iYearReleased, const QString& szThumbnails, const QString& szIMDBID, const QString& szTitleFormattedForSorting, qint32 iRuntime, - const QString& szMPAARating, const QString& szIMDBTop250Ranking, const QString& szGenre, const QString& szDirector, + const QString& szMPAARating, qint32 iIMDBTop250Ranking, const QString& szGenre, const QString& szDirector, const QString& szOriginalMovieTitle, const QString& szStudio, const QString& szTrailerURL, const QString& szFanartURLs, const QString& szCountry, const QString& szFilePath, qint32 idPath, qint32 idSet, qint32 iUserrating, const QString& szSet, const QString& szSetOverview, const QString& szFileName, const QString& szPathURL, qint32 iPlayCount, const QDateTime& lastPlayed, const QDateTime& dateAdded, qreal dResumeTimeInSeconds, qreal dTotalTimeInSeconds) : m_values(idMovie, idFile, szLocalMovieTitle, szMoviePlot, szMoviePlotOutline, szMovieTagline, iRatingVotes, dRating, szWriters, iYearReleased, - szThumbnails, szIMDBID, szTitleFormattedForSorting, iRuntime, szMPAARating, szIMDBTop250Ranking, szGenre, szDirector, szOriginalMovieTitle, + szThumbnails, szIMDBID, szTitleFormattedForSorting, iRuntime, szMPAARating, iIMDBTop250Ranking, szGenre, szDirector, szOriginalMovieTitle, szStudio, szTrailerURL, szFanartURLs, szCountry, szFilePath, idPath, idSet, iUserrating, szSet, szSetOverview, szFileName, szPathURL, iPlayCount, lastPlayed, dateAdded, dResumeTimeInSeconds, dTotalTimeInSeconds) { @@ -183,7 +183,7 @@ cMyVideosList::cMyVideosList() cMyVideos* cMyVideosList::add(qint32 idMovie, qint32 idFile, const QString& szLocalMovieTitle, const QString& szMoviePlot, const QString& szMoviePlotOutline, const QString& szMovieTagline, qint32 iRatingVotes, qreal dRating, const QString& szWriters, qint32 iYearReleased, const QString& szThumbnails, const QString& szIMDBID, const QString& szTitleFormattedForSorting, qint32 iRuntime, - const QString& szMPAARating, const QString& szIMDBTop250Ranking, const QString& szGenre, const QString& szDirector, + const QString& szMPAARating, qint32 iIMDBTop250Ranking, const QString& szGenre, const QString& szDirector, const QString& szOriginalMovieTitle, const QString& szStudio, const QString& szTrailerURL, const QString& szFanartURLs, const QString& szCountry, const QString& szFilePath, qint32 idPath, qint32 idSet, qint32 iUserrating, const QString& szSet, const QString& szSetOverview, const QString& szFileName, const QString& szPathURL, qint32 iPlayCount, const QDateTime& lastPlayed, const QDateTime& dateAdded, @@ -191,7 +191,7 @@ cMyVideos* cMyVideosList::add(qint32 idMovie, qint32 idFile, const QString& szLo { cMyVideos* lpNew = new cMyVideos(idMovie, idFile, szLocalMovieTitle, szMoviePlot, szMoviePlotOutline, szMovieTagline, iRatingVotes, dRating, szWriters, iYearReleased, szThumbnails, szIMDBID, szTitleFormattedForSorting, iRuntime, szMPAARating, - szIMDBTop250Ranking, szGenre, szDirector, szOriginalMovieTitle, szStudio, szTrailerURL, szFanartURLs, + iIMDBTop250Ranking, szGenre, szDirector, szOriginalMovieTitle, szStudio, szTrailerURL, szFanartURLs, szCountry, szFilePath, idPath, idSet, iUserrating, szSet, szSetOverview, szFileName, szPathURL, iPlayCount, lastPlayed, dateAdded, dResumeTimeInSeconds, dTotalTimeInSeconds); append(lpNew); @@ -228,21 +228,184 @@ QString cMyVideos::movieTagline() return(m_values.m_szMovieTagline); } +qint32 cMyVideos::ratingVotes() +{ + return(m_values.m_iRatingVotes); +} + +qreal cMyVideos::rating() +{ + return(m_values.m_dRating); +} + +QStringList cMyVideos::writers() +{ + return(m_values.m_szWriters.split(", ")); +} + qint32 cMyVideos::yearReleased() { return(m_values.m_iYearReleased); } +QList cMyVideos::thumbnails() +{ + QList list; + QStringList tmpList = m_values.m_szThumbnails.split("><"); + + for(int z = 0;z < tmpList.count();z++) + { + QString str = tmpList.at(z); + STRING2 str2; + if(str.indexOf("preview=")) + { + str2._1 = str.mid(str.indexOf("preview=")+9); + str2._1 = str2._1.left(str2._1.indexOf("\">")); + str2._2 = str.mid(str.indexOf("\">")+2); + str2._2 = str2._2.left(str2._2.indexOf(" cMyVideos::fanartURL() +{ + QString tmp = m_values.m_szFanartURLs.mid(8, m_values.m_szFanartURLs.length()-17); + QList list; + QStringList tmpList = tmp.split("><"); + + for(int z = 0;z < tmpList.count();z++) + { + QString str = tmpList.at(z); + STRING2 str2; + if(str.indexOf("preview=")) + { + str2._1 = str.mid(str.indexOf("preview=")+9); + str2._1 = str2._1.left(str2._1.indexOf("\">")); + str2._2 = str.mid(str.indexOf("\">")+2); + str2._2 = str2._2.left(str2._2.indexOf(" +typedef struct tagSTRING2 +{ + QString _1; + QString _2; +} STRING2; + class cMyVideosValues { public: @@ -15,7 +21,7 @@ public: cMyVideosValues(qint32 idMovie, qint32 idFile, const QString& szLocalMovieTitle, const QString& szMoviePlot, const QString& szMoviePlotOutline, const QString& szMovieTagline, qint32 iRatingVotes, qreal dRating, const QString& szWriters, qint32 iYearReleased, const QString& szThumbnails, const QString& szIMDBID, const QString& szTitleFormattedForSorting, qint32 iRuntime, - const QString& szMPAARating, const QString& szIMDBTop250Ranking, const QString& szGenre, const QString& szDirector, + const QString& szMPAARating, qint32 iIMDBTop250Ranking, const QString& szGenre, const QString& szDirector, const QString& szOriginalMovieTitle, const QString& szStudio, const QString& szTrailerURL, const QString& szFanartURLs, const QString& szCountry, const QString& szFilePath, qint32 idPath, qint32 idSet, qint32 iUserrating, const QString& szSet, const QString& szSetOverview, const QString& szFileName, const QString& szPathURL, qint32 iPlayCount, const QDateTime& lastPlayed, const QDateTime& dateAdded, @@ -24,7 +30,7 @@ public: void set(qint32 idMovie, qint32 idFile, const QString& szLocalMovieTitle, const QString& szMoviePlot, const QString& szMoviePlotOutline, const QString& szMovieTagline, qint32 iRatingVotes, qreal dRating, const QString& szWriters, qint32 iYearReleased, const QString& szThumbnails, const QString& szIMDBID, const QString& szTitleFormattedForSorting, qint32 iRuntime, - const QString& szMPAARating, const QString& szIMDBTop250Ranking, const QString& szGenre, const QString& szDirector, + const QString& szMPAARating, qint32 iIMDBTop250Ranking, const QString& szGenre, const QString& szDirector, const QString& szOriginalMovieTitle, const QString& szStudio, const QString& szTrailerURL, const QString& szFanartURLs, const QString& szCountry, const QString& szFilePath, qint32 idPath, qint32 idSet, qint32 iUserrating, const QString& szSet, const QString& szSetOverview, const QString& szFileName, const QString& szPathURL, qint32 iPlayCount, const QDateTime& lastPlayed, const QDateTime& dateAdded, @@ -48,7 +54,7 @@ public: QString m_szTitleFormattedForSorting; // c10 qint32 m_iRuntime; // c11 QString m_szMPAARating; // c12 - QString m_szIMDBTop250Ranking; // c13 + qint32 m_iIMDBTop250Ranking; // c13 QString m_szGenre; // c14 QString m_szDirector; // c15 QString m_szOriginalMovieTitle; // c16 @@ -77,24 +83,50 @@ public: cMyVideos(qint32 idMovie, qint32 idFile, const QString& szLocalMovieTitle, const QString& szMoviePlot, const QString& szMoviePlotOutline, const QString& szMovieTagline, qint32 iRatingVotes, qreal dRating, const QString& szWriters, qint32 iYearReleased, const QString& szThumbnails, const QString& szIMDBID, const QString& szTitleFormattedForSorting, qint32 iRuntime, - const QString& szMPAARating, const QString& szIMDBTop250Ranking, const QString& szGenre, const QString& szDirector, + const QString& szMPAARating,qint32 iIMDBTop250Ranking, const QString& szGenre, const QString& szDirector, const QString& szOriginalMovieTitle, const QString& szStudio, const QString& szTrailerURL, const QString& szFanartURLs, const QString& szCountry, const QString& szFilePath, qint32 idPath, qint32 idSet, qint32 iUserrating, const QString& szSet, const QString& szSetOverview, const QString& szFileName, const QString& szPathURL, qint32 iPlayCount, const QDateTime& lastPlayed, const QDateTime& dateAdded, qreal dResumeTimeInSeconds, qreal dTotalTimeInSeconds); - qint32 idMovie(); - qint32 idFile(); - QString localMovieTitle(); - QString moviePlot(); - QString moviePlotOutline(); - QString movieTagline(); - qint32 yearReleased(); - qint32 idSet(); - QString set(); + qint32 idMovie(); + qint32 idFile(); + QString localMovieTitle(); + QString moviePlot(); + QString moviePlotOutline(); + QString movieTagline(); + qint32 ratingVotes(); + qreal rating(); + QStringList writers(); + qint32 yearReleased(); + QList thumbnails(); + QString imdbID(); + QString titleFormattedForSorting(); + qint32 runtime(); + QString mpaaRating(); + qint32 imdbTop250Ranking(); + QStringList genre(); + QStringList director(); + QString originalMovieTitle(); + QStringList studio(); + QString trailerURL(); + QList fanartURL(); + QStringList country(); + QString filePath(); + qint32 idSet(); + qint32 userRating(); + QString set(); + QString setOverview(); + QString fileName(); + QString pathURL(); + qint32 playCount(); + QDateTime lastPlayed(); + QDateTime dateAdded(); + qreal resumeTimeInSeconds(); + qreal totalTimeInSeconds(); - bool isNew(); - bool isChanged(); + bool isNew(); + bool isChanged(); private: cMyVideosValues m_values; cMyVideosValues m_oValues; @@ -109,7 +141,7 @@ public: cMyVideos* add(qint32 idMovie, qint32 idFile, const QString& szLocalMovieTitle, const QString& szMoviePlot, const QString& szMoviePlotOutline, const QString& szMovieTagline, qint32 iRatingVotes, qreal dRating, const QString& szWriters, qint32 iYearReleased, const QString& szThumbnails, const QString& szIMDBID, const QString& szTitleFormattedForSorting, qint32 iRuntime, - const QString& szMPAARating, const QString& szIMDBTop250Ranking, const QString& szGenre, const QString& szDirector, + const QString& szMPAARating, qint32 iIMDBTop250Ranking, const QString& szGenre, const QString& szDirector, const QString& szOriginalMovieTitle, const QString& szStudio, const QString& szTrailerURL, const QString& szFanartURLs, const QString& szCountry, const QString& szFilePath, qint32 idPath, qint32 idSet, qint32 iUserrating, const QString& szSet, const QString& szSetOverview, const QString& szFileName, const QString& szPathURL, qint32 iPlayCount, const QDateTime& lastPlayed, const QDateTime& dateAdded, diff --git a/cvideowidget.cpp b/cvideowidget.cpp index 9bcb3d0..50d3ec9 100644 --- a/cvideowidget.cpp +++ b/cvideowidget.cpp @@ -70,6 +70,36 @@ void cVideoWidget::selectionChanged(const QItemSelection& /*newSelection*/, cons const QModelIndex index = ui->m_lpVideoView->selectionModel()->currentIndex(); cMyVideos* lpVideos = index.data(Qt::UserRole).value(); + ui->m_lpDirector->clear(); + ui->m_lpWriter->clear(); + + // Basic Tab + ui->m_lpTitle->setText(lpVideos->localMovieTitle()); + ui->m_lpOriginalTitle->setText(lpVideos->originalMovieTitle()); + ui->m_lpTitleForSorting->setText(lpVideos->titleFormattedForSorting()); + ui->m_lpSet->setText(lpVideos->set()); + ui->m_lpTagline->setText(lpVideos->movieTagline()); + ui->m_lpRating->setValue(lpVideos->rating()); + ui->m_lpRatingVotes->setValue(lpVideos->ratingVotes()); + ui->m_lpTop250->setValue(lpVideos->imdbTop250Ranking()); + ui->m_lpReleased->setValue(lpVideos->yearReleased()); + ui->m_lpRuntime->setValue(lpVideos->runtime()); + ui->m_lpCertification->setText(lpVideos->mpaaRating()); + ui->m_lpTrailer->setText(lpVideos->trailerURL()); + ui->m_lpPlayCount->setValue(lpVideos->playCount()); + ui->m_lpLastPlayed->setDateTime(lpVideos->lastPlayed()); + ui->m_lpPlot->setText(lpVideos->moviePlot()); + ui->m_lpOutline->setText(lpVideos->moviePlotOutline()); + + // Extended Tab + ui->m_lpGenres->addItems(lpVideos->genre()); + ui->m_lpCountries->addItems(lpVideos->country()); + ui->m_lpStudios->addItems(lpVideos->studio()); + + // Crew Tab + ui->m_lpDirector->addItems(lpVideos->director()); + ui->m_lpWriter->addItems(lpVideos->writers()); + if(m_lpVideoModel->itemFromIndex(index)->hasChildren()) { thumb = m_lpImageList->get(cImage::MEDIATYPE_set, cImage::TYPE_thumb, lpVideos->idSet()); diff --git a/cvideowidget.ui b/cvideowidget.ui index e45ec0e..1c6f7c9 100644 --- a/cvideowidget.ui +++ b/cvideowidget.ui @@ -63,8 +63,8 @@ 0 0 - 791 - 714 + 901 + 697 @@ -73,22 +73,546 @@ - 0 + 1 Basic + + + + + + + Set + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + + + + + + + + Rating + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + + + + + Tagline + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + + + + + + + + + + + + + Votes + + + + + + + 99999 + + + + + + + Top 250 + + + + + + + 99999 + + + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + + + + + + Original Title + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + + + + + + + + + + + Name + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + + + + + + + + Title for Sorting + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + + + + + Released + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + + + + + + + + Trailer + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + + + + + Certification + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + + + + + Outline + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + + + + + + + + + + > + + + + + + + + + + + 2999 + + + + + + + Runtime + + + + + + + 3000 + + + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + + + + + + + + + + + + Play Count + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + + + + + + + 99999 + + + + + + + Last Played + + + + + + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + + + + + + Plot + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + + + + + + + Qt::Vertical + + + + 20 + 40 + + + + + Extended + + + + + + + Genres + + + + + + + + + + + add + + + + + + + edit + + + + + + + remove + + + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + + + + + + + + + Studios + + + + + + + + + + + add + + + + + + + edit + + + + + + + delete + + + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + + + + + + + + + Countries + + + + + + + + + + + add + + + + + + + edit + + + + + + + delete + + + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + + + + + + + + + + + Qt::Vertical + + + + 20 + 40 + + + + + Crew + + + + + + + Director + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + + + + + + + + Writer + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + + + + + + + + + + Qt::Vertical + + + + 20 + 40 + + + + +