Skip to content

Commit

Permalink
Video Service: Return Artwork object with Video returns.
Browse files Browse the repository at this point in the history
This is for consistency with the Program object.  Also reorganize
filling of Video object a bit.
  • Loading branch information
Robert McNamara committed Nov 28, 2011
1 parent cc1314d commit adf2f28
Show file tree
Hide file tree
Showing 5 changed files with 135 additions and 79 deletions.
Expand Up @@ -27,6 +27,7 @@

#include "serviceexp.h"
#include "datacontracthelper.h"
#include "artworkInfoList.h"

namespace DTC
{
Expand All @@ -36,7 +37,7 @@ namespace DTC
class SERVICE_PUBLIC VideoMetadataInfo : public QObject
{
Q_OBJECT
Q_CLASSINFO( "version" , "1.02" );
Q_CLASSINFO( "version" , "1.10" );

Q_PROPERTY( int Id READ Id WRITE setId )
Q_PROPERTY( QString Title READ Title WRITE setTitle )
Expand Down Expand Up @@ -67,6 +68,8 @@ class SERVICE_PUBLIC VideoMetadataInfo : public QObject
Q_PROPERTY( QString Screenshot READ Screenshot WRITE setScreenshot )
Q_PROPERTY( QString Trailer READ Trailer WRITE setTrailer )

Q_PROPERTY( QObject* Artwork READ Artwork DESIGNABLE SerializeArtwork )

PROPERTYIMP ( int , Id )
PROPERTYIMP ( QString , Title )
PROPERTYIMP ( QString , SubTitle )
Expand Down Expand Up @@ -96,19 +99,35 @@ class SERVICE_PUBLIC VideoMetadataInfo : public QObject
PROPERTYIMP ( QString , Screenshot )
PROPERTYIMP ( QString , Trailer )

PROPERTYIMP_PTR( ArtworkInfoList, Artwork )
PROPERTYIMP ( bool , SerializeArtwork)

public:

static void InitializeCustomTypes()
{
qRegisterMetaType< VideoMetadataInfo >();
qRegisterMetaType< VideoMetadataInfo* >();

if (QMetaType::type( "DTC::ArtworkInfoList" ) == 0)
ArtworkInfoList::InitializeCustomTypes();
}

public:

VideoMetadataInfo(QObject *parent = 0)
: QObject ( parent ),
m_Id ( 0 )
m_Id ( 0 ),
m_UserRating ( 0 ),
m_Length ( 0 ),
m_Season ( 0 ),
m_Episode ( 0 ),
m_ParentalLevel ( 0 ),
m_Visible ( false ),
m_Watched ( false ),
m_Processed ( false ),
m_Artwork ( NULL ),
m_SerializeArtwork( true )
{
}

Expand All @@ -119,7 +138,11 @@ class SERVICE_PUBLIC VideoMetadataInfo : public QObject

void Copy( const VideoMetadataInfo &src )
{
m_Id = src.m_Id ;
m_Id = src.m_Id;
m_SerializeArtwork = src.m_SerializeArtwork;

if ( src.m_Artwork != NULL)
Artwork()->Copy( src.m_Artwork );
}
};

Expand Down
91 changes: 91 additions & 0 deletions mythtv/programs/mythbackend/services/serviceUtil.cpp
Expand Up @@ -157,6 +157,10 @@ void FillChannelInfo( DTC::ChannelInfo *pChannel,

}

/////////////////////////////////////////////////////////////////////////////
//
/////////////////////////////////////////////////////////////////////////////

void FillRecRuleInfo( DTC::RecRule *pRecRule,
RecordingRule *pRule )
{
Expand Down Expand Up @@ -214,6 +218,10 @@ void FillRecRuleInfo( DTC::RecRule *pRecRule,
pRecRule->setAverageDelay ( pRule->m_averageDelay );
}

/////////////////////////////////////////////////////////////////////////////
//
/////////////////////////////////////////////////////////////////////////////

void FillArtworkInfoList( DTC::ArtworkInfoList *pArtworkInfoList,
const QString &sInetref,
uint nSeason )
Expand Down Expand Up @@ -253,3 +261,86 @@ void FillArtworkInfoList( DTC::ArtworkInfoList *pArtworkInfoList,
}
}

/////////////////////////////////////////////////////////////////////////////
//
/////////////////////////////////////////////////////////////////////////////

void FillVideoMetadataInfo (
DTC::VideoMetadataInfo *pVideoMetadataInfo,
VideoMetadataListManager::VideoMetadataPtr pMetadata,
bool bDetails)
{
pVideoMetadataInfo->setId(pMetadata->GetID());
pVideoMetadataInfo->setTitle(pMetadata->GetTitle());
pVideoMetadataInfo->setSubTitle(pMetadata->GetSubtitle());
pVideoMetadataInfo->setTagline(pMetadata->GetTagline());
pVideoMetadataInfo->setDirector(pMetadata->GetDirector());
pVideoMetadataInfo->setStudio(pMetadata->GetStudio());
pVideoMetadataInfo->setDescription(pMetadata->GetPlot());
pVideoMetadataInfo->setCertification(pMetadata->GetRating());
pVideoMetadataInfo->setInetref(pMetadata->GetInetRef());
pVideoMetadataInfo->setHomePage(pMetadata->GetHomepage());
pVideoMetadataInfo->setReleaseDate(QDateTime(pMetadata->GetReleaseDate()));
pVideoMetadataInfo->setAddDate(QDateTime(pMetadata->GetInsertdate()));
pVideoMetadataInfo->setUserRating(pMetadata->GetUserRating());
pVideoMetadataInfo->setLength(pMetadata->GetLength());
pVideoMetadataInfo->setSeason(pMetadata->GetSeason());
pVideoMetadataInfo->setEpisode(pMetadata->GetEpisode());
pVideoMetadataInfo->setParentalLevel(pMetadata->GetShowLevel());
pVideoMetadataInfo->setVisible(pMetadata->GetBrowse());
pVideoMetadataInfo->setWatched(pMetadata->GetWatched());
pVideoMetadataInfo->setProcessed(pMetadata->GetProcessed());
pVideoMetadataInfo->setFileName(pMetadata->GetFilename());
pVideoMetadataInfo->setHash(pMetadata->GetHash());
pVideoMetadataInfo->setHostName(pMetadata->GetHost());
pVideoMetadataInfo->setCoverart(pMetadata->GetCoverFile());
pVideoMetadataInfo->setFanart(pMetadata->GetFanart());
pVideoMetadataInfo->setBanner(pMetadata->GetBanner());
pVideoMetadataInfo->setScreenshot(pMetadata->GetScreenshot());
pVideoMetadataInfo->setTrailer(pMetadata->GetTrailer());
pVideoMetadataInfo->setSerializeArtwork( true );

if (bDetails)
{
if (!pMetadata->GetFanart().isEmpty())
{
DTC::ArtworkInfo *pArtInfo =
pVideoMetadataInfo->Artwork()->AddNewArtworkInfo();
pArtInfo->setStorageGroup("Fanart");
pArtInfo->setType("fanart");
pArtInfo->setURL(QString("/Content/GetImageFile?StorageGroup=%1"
"&FileName=%2").arg("Fanart")
.arg(pMetadata->GetFanart()));
}
if (!pMetadata->GetCoverFile().isEmpty())
{
DTC::ArtworkInfo *pArtInfo =
pVideoMetadataInfo->Artwork()->AddNewArtworkInfo();
pArtInfo->setStorageGroup("Coverart");
pArtInfo->setType("coverart");
pArtInfo->setURL(QString("/Content/GetImageFile?StorageGroup=%1"
"&FileName=%2").arg("Coverart")
.arg(pMetadata->GetCoverFile()));
}
if (!pMetadata->GetBanner().isEmpty())
{
DTC::ArtworkInfo *pArtInfo =
pVideoMetadataInfo->Artwork()->AddNewArtworkInfo();
pArtInfo->setStorageGroup("Banners");
pArtInfo->setType("banner");
pArtInfo->setURL(QString("/Content/GetImageFile?StorageGroup=%1"
"&FileName=%2").arg("Banners")
.arg(pMetadata->GetBanner()));
}
if (!pMetadata->GetScreenshot().isEmpty())
{
DTC::ArtworkInfo *pArtInfo =
pVideoMetadataInfo->Artwork()->AddNewArtworkInfo();
pArtInfo->setStorageGroup("Screenshots");
pArtInfo->setType("screenshot");
pArtInfo->setURL(QString("/Content/GetImageFile?StorageGroup=%1"
"&FileName=%2").arg("Screenshots")
.arg(pMetadata->GetScreenshot()));
}
}
}
7 changes: 7 additions & 0 deletions mythtv/programs/mythbackend/services/serviceUtil.h
Expand Up @@ -25,8 +25,11 @@
#include "datacontracts/programAndChannel.h"
#include "datacontracts/recRule.h"
#include "datacontracts/artworkInfoList.h"
#include "datacontracts/videoMetadataInfo.h"

#include "programinfo.h"
#include "recordingrule.h"
#include "videometadatalistmanager.h"

void FillProgramInfo( DTC::Program *pProgram,
ProgramInfo *pInfo,
Expand All @@ -44,4 +47,8 @@ void FillArtworkInfoList( DTC::ArtworkInfoList *pArtworkInfoList,
const QString &sInetref,
uint nSeason );

void FillVideoMetadataInfo (
DTC::VideoMetadataInfo *pVideoMetadataInfo,
VideoMetadataListManager::VideoMetadataPtr pMetadata,
bool bDetails);
#endif
83 changes: 11 additions & 72 deletions mythtv/programs/mythbackend/services/video.cpp
Expand Up @@ -73,36 +73,7 @@ DTC::VideoMetadataInfoList* Video::GetVideoList( bool bDescending,
VideoMetadataListManager::VideoMetadataPtr metadata = videos[n];

if (metadata)
{
pVideoMetadataInfo->setId(metadata->GetID());
pVideoMetadataInfo->setTitle(metadata->GetTitle());
pVideoMetadataInfo->setSubTitle(metadata->GetSubtitle());
pVideoMetadataInfo->setTagline(metadata->GetTagline());
pVideoMetadataInfo->setDirector(metadata->GetDirector());
pVideoMetadataInfo->setStudio(metadata->GetStudio());
pVideoMetadataInfo->setDescription(metadata->GetPlot());
pVideoMetadataInfo->setCertification(metadata->GetRating());
pVideoMetadataInfo->setInetref(metadata->GetInetRef());
pVideoMetadataInfo->setHomePage(metadata->GetHomepage());
pVideoMetadataInfo->setReleaseDate(QDateTime(metadata->GetReleaseDate()));
pVideoMetadataInfo->setAddDate(QDateTime(metadata->GetInsertdate()));
pVideoMetadataInfo->setUserRating(metadata->GetUserRating());
pVideoMetadataInfo->setLength(metadata->GetLength());
pVideoMetadataInfo->setSeason(metadata->GetSeason());
pVideoMetadataInfo->setEpisode(metadata->GetEpisode());
pVideoMetadataInfo->setParentalLevel(metadata->GetShowLevel());
pVideoMetadataInfo->setVisible(metadata->GetBrowse());
pVideoMetadataInfo->setWatched(metadata->GetWatched());
pVideoMetadataInfo->setProcessed(metadata->GetProcessed());
pVideoMetadataInfo->setFileName(metadata->GetFilename());
pVideoMetadataInfo->setHash(metadata->GetHash());
pVideoMetadataInfo->setHostName(metadata->GetHost());
pVideoMetadataInfo->setCoverart(metadata->GetCoverFile());
pVideoMetadataInfo->setFanart(metadata->GetFanart());
pVideoMetadataInfo->setBanner(metadata->GetBanner());
pVideoMetadataInfo->setScreenshot(metadata->GetScreenshot());
pVideoMetadataInfo->setTrailer(metadata->GetTrailer());
}
FillVideoMetadataInfo ( pVideoMetadataInfo, metadata, true );
}

int curPage = 0, totalPages = 0;
Expand Down Expand Up @@ -142,7 +113,9 @@ DTC::VideoMetadataInfo* Video::GetVideo( int Id )
if ( !metadata )
throw( QString( "No metadata found for selected ID!." ));

DTC::VideoMetadataInfo *pVideoMetadataInfo = GetInfoFromMetadata(metadata);
DTC::VideoMetadataInfo *pVideoMetadataInfo = new DTC::VideoMetadataInfo();

FillVideoMetadataInfo ( pVideoMetadataInfo, metadata, true );

return pVideoMetadataInfo;
}
Expand All @@ -162,7 +135,9 @@ DTC::VideoMetadataInfo* Video::GetVideoByFileName( const QString &FileName )
if ( !metadata )
throw( QString( "No metadata found for selected filename!." ));

DTC::VideoMetadataInfo *pVideoMetadataInfo = GetInfoFromMetadata(metadata);
DTC::VideoMetadataInfo *pVideoMetadataInfo = new DTC::VideoMetadataInfo();

FillVideoMetadataInfo ( pVideoMetadataInfo, metadata, true );

delete mlm;

Expand Down Expand Up @@ -363,46 +338,6 @@ bool Video::AddVideo( const QString &sFileName,
//
/////////////////////////////////////////////////////////////////////////////

DTC::VideoMetadataInfo* Video::GetInfoFromMetadata(
VideoMetadataListManager::VideoMetadataPtr metadata)
{
DTC::VideoMetadataInfo *pVideoMetadataInfo = new DTC::VideoMetadataInfo();

if (metadata)
{
pVideoMetadataInfo->setId(metadata->GetID());
pVideoMetadataInfo->setTitle(metadata->GetTitle());
pVideoMetadataInfo->setSubTitle(metadata->GetSubtitle());
pVideoMetadataInfo->setTagline(metadata->GetTagline());
pVideoMetadataInfo->setDirector(metadata->GetDirector());
pVideoMetadataInfo->setStudio(metadata->GetStudio());
pVideoMetadataInfo->setDescription(metadata->GetPlot());
pVideoMetadataInfo->setCertification(metadata->GetRating());
pVideoMetadataInfo->setInetref(metadata->GetInetRef());
pVideoMetadataInfo->setHomePage(metadata->GetHomepage());
pVideoMetadataInfo->setReleaseDate(QDateTime(metadata->GetReleaseDate()));
pVideoMetadataInfo->setAddDate(QDateTime(metadata->GetInsertdate()));
pVideoMetadataInfo->setUserRating(metadata->GetUserRating());
pVideoMetadataInfo->setLength(metadata->GetLength());
pVideoMetadataInfo->setSeason(metadata->GetSeason());
pVideoMetadataInfo->setEpisode(metadata->GetEpisode());
pVideoMetadataInfo->setParentalLevel(metadata->GetShowLevel());
pVideoMetadataInfo->setVisible(metadata->GetBrowse());
pVideoMetadataInfo->setWatched(metadata->GetWatched());
pVideoMetadataInfo->setProcessed(metadata->GetProcessed());
pVideoMetadataInfo->setFileName(metadata->GetFilename());
pVideoMetadataInfo->setHash(metadata->GetHash());
pVideoMetadataInfo->setHostName(metadata->GetHost());
pVideoMetadataInfo->setCoverart(metadata->GetCoverFile());
pVideoMetadataInfo->setFanart(metadata->GetFanart());
pVideoMetadataInfo->setBanner(metadata->GetBanner());
pVideoMetadataInfo->setScreenshot(metadata->GetScreenshot());
pVideoMetadataInfo->setTrailer(metadata->GetTrailer());
}

return pVideoMetadataInfo;
}

DTC::BlurayInfo* Video::GetBluray( const QString &sPath )
{
QString path = sPath;
Expand Down Expand Up @@ -454,3 +389,7 @@ DTC::BlurayInfo* Video::GetBluray( const QString &sPath )

return pBlurayInfo;
}

/////////////////////////////////////////////////////////////////////////////
//
/////////////////////////////////////////////////////////////////////////////
4 changes: 0 additions & 4 deletions mythtv/programs/mythbackend/services/video.h
Expand Up @@ -65,10 +65,6 @@ class Video : public VideoServices

DTC::BlurayInfo* GetBluray ( const QString &Path );

private:

DTC::VideoMetadataInfo* GetInfoFromMetadata(
VideoMetadataListManager::VideoMetadataPtr metadata );
};

// --------------------------------------------------------------------------
Expand Down

0 comments on commit adf2f28

Please sign in to comment.