|
MythTV
0.26-pre
|
00001 00002 // Program Name: program.h 00003 // Created : Jan. 15, 2010 00004 // 00005 // Copyright (c) 2010 David Blain <dblain@mythtv.org> 00006 // 00007 // Licensed under the GPL v2 or later, see COPYING for details 00008 // 00010 00011 #ifndef PROGRAM_H_ 00012 #define PROGRAM_H_ 00013 00014 #include <QDateTime> 00015 #include <QString> 00016 00017 #include "serviceexp.h" 00018 #include "datacontracthelper.h" 00019 00020 #include "recording.h" 00021 #include "artworkInfoList.h" 00022 00023 namespace DTC 00024 { 00025 00026 class Program; 00027 00028 00029 class SERVICE_PUBLIC ChannelInfo : public QObject 00030 { 00031 Q_OBJECT 00032 Q_CLASSINFO( "version", "1.06" ); 00033 00034 // Q_CLASSINFO Used to augment Metadata for properties. 00035 // See datacontracthelper.h for details 00036 00037 Q_CLASSINFO( "Programs", "type=DTC::Program"); 00038 00039 Q_PROPERTY( uint ChanId READ ChanId WRITE setChanId ) 00040 Q_PROPERTY( QString ChanNum READ ChanNum WRITE setChanNum ) 00041 Q_PROPERTY( QString CallSign READ CallSign WRITE setCallSign ) 00042 Q_PROPERTY( QString IconURL READ IconURL WRITE setIconURL ) 00043 Q_PROPERTY( QString ChannelName READ ChannelName WRITE setChannelName ) 00044 00045 Q_PROPERTY( uint MplexId READ MplexId WRITE setMplexId DESIGNABLE SerializeDetails ) 00046 Q_PROPERTY( uint TransportId READ TransportId WRITE setTransportId DESIGNABLE SerializeDetails ) 00047 Q_PROPERTY( uint ServiceId READ ServiceId WRITE setServiceId DESIGNABLE SerializeDetails ) 00048 Q_PROPERTY( uint NetworkId READ NetworkId WRITE setNetworkId DESIGNABLE SerializeDetails ) 00049 Q_PROPERTY( uint ATSCMajorChan READ ATSCMajorChan WRITE setATSCMajorChan DESIGNABLE SerializeDetails ) 00050 Q_PROPERTY( uint ATSCMinorChan READ ATSCMinorChan WRITE setATSCMinorChan DESIGNABLE SerializeDetails ) 00051 Q_PROPERTY( QString Format READ Format WRITE setFormat DESIGNABLE SerializeDetails ) 00052 Q_PROPERTY( QString Modulation READ Modulation WRITE setModulation DESIGNABLE SerializeDetails ) 00053 Q_PROPERTY( long Frequency READ Frequency WRITE setFrequency DESIGNABLE SerializeDetails ) 00054 Q_PROPERTY( QString FrequencyId READ FrequencyId WRITE setFrequencyId DESIGNABLE SerializeDetails ) 00055 Q_PROPERTY( QString FrequencyTable READ FrequencyTable WRITE setFrequencyTable DESIGNABLE SerializeDetails ) 00056 Q_PROPERTY( int FineTune READ FineTune WRITE setFineTune DESIGNABLE SerializeDetails ) 00057 Q_PROPERTY( QString SIStandard READ SIStandard WRITE setSIStandard DESIGNABLE SerializeDetails ) 00058 Q_PROPERTY( QString ChanFilters READ ChanFilters WRITE setChanFilters DESIGNABLE SerializeDetails ) 00059 Q_PROPERTY( int SourceId READ SourceId WRITE setSourceId DESIGNABLE SerializeDetails ) 00060 Q_PROPERTY( int InputId READ InputId WRITE setInputId DESIGNABLE SerializeDetails ) 00061 Q_PROPERTY( int CommFree READ CommFree WRITE setCommFree DESIGNABLE SerializeDetails ) 00062 Q_PROPERTY( bool UseEIT READ UseEIT WRITE setUseEIT DESIGNABLE SerializeDetails ) 00063 Q_PROPERTY( bool Visible READ Visible WRITE setVisible DESIGNABLE SerializeDetails ) 00064 Q_PROPERTY( QString XMLTVID READ XMLTVID WRITE setXMLTVID DESIGNABLE SerializeDetails ) 00065 Q_PROPERTY( QString DefaultAuth READ DefaultAuth WRITE setDefaultAuth DESIGNABLE SerializeDetails ) 00066 00067 Q_PROPERTY( QVariantList Programs READ Programs DESIGNABLE true ) 00068 00069 PROPERTYIMP ( uint , ChanId ) 00070 PROPERTYIMP ( QString , ChanNum ) 00071 PROPERTYIMP ( QString , CallSign ) 00072 PROPERTYIMP ( QString , IconURL ) 00073 PROPERTYIMP ( QString , ChannelName ) 00074 PROPERTYIMP ( uint , MplexId ) 00075 PROPERTYIMP ( uint , TransportId ) 00076 PROPERTYIMP ( uint , ServiceId ) 00077 PROPERTYIMP ( uint , NetworkId ) 00078 PROPERTYIMP ( uint , ATSCMajorChan ) 00079 PROPERTYIMP ( uint , ATSCMinorChan ) 00080 PROPERTYIMP ( QString , Format ) 00081 PROPERTYIMP ( QString , Modulation ) 00082 PROPERTYIMP ( uint64_t , Frequency ) 00083 PROPERTYIMP ( QString , FrequencyId ) 00084 PROPERTYIMP ( QString , FrequencyTable ) 00085 PROPERTYIMP ( int , FineTune ) 00086 PROPERTYIMP ( QString , SIStandard ) 00087 PROPERTYIMP ( QString , ChanFilters ) 00088 PROPERTYIMP ( int , SourceId ) 00089 PROPERTYIMP ( int , InputId ) 00090 PROPERTYIMP ( int , CommFree ) 00091 PROPERTYIMP ( bool , UseEIT ) 00092 PROPERTYIMP ( bool , Visible ) 00093 PROPERTYIMP ( QString , XMLTVID ) 00094 PROPERTYIMP ( QString , DefaultAuth ) 00095 00096 PROPERTYIMP_RO_REF( QVariantList, Programs ) 00097 00098 // Used only by Serializer 00099 PROPERTYIMP( bool, SerializeDetails ) 00100 00101 public: 00102 00103 static void InitializeCustomTypes(); 00104 00105 public: 00106 00107 ChannelInfo(QObject *parent = 0) 00108 : QObject ( parent ), 00109 m_ChanId ( 0 ), 00110 m_MplexId ( 0 ), 00111 m_TransportId ( 0 ), 00112 m_ServiceId ( 0 ), 00113 m_NetworkId ( 0 ), 00114 m_ATSCMajorChan ( 0 ), 00115 m_ATSCMinorChan ( 0 ), 00116 m_Frequency ( 0 ), 00117 m_FineTune ( 0 ), 00118 m_SourceId ( 0 ), 00119 m_InputId ( 0 ), 00120 m_CommFree ( 0 ), 00121 m_UseEIT ( false ), 00122 m_Visible ( true ), 00123 m_SerializeDetails( true ) 00124 { 00125 } 00126 00127 ChannelInfo( const ChannelInfo &src ) 00128 { 00129 Copy( src ); 00130 } 00131 00132 void Copy( const ChannelInfo &src ) 00133 { 00134 m_ChanId = src.m_ChanId ; 00135 m_ChanNum = src.m_ChanNum ; 00136 m_CallSign = src.m_CallSign ; 00137 m_IconURL = src.m_IconURL ; 00138 m_ChannelName = src.m_ChannelName ; 00139 m_ChanFilters = src.m_ChanFilters ; 00140 m_SourceId = src.m_SourceId ; 00141 m_InputId = src.m_InputId ; 00142 m_CommFree = src.m_CommFree ; 00143 m_UseEIT = src.m_UseEIT ; 00144 m_Visible = src.m_Visible ; 00145 00146 CopyListContents< Program >( this, m_Programs, src.m_Programs ); 00147 } 00148 00149 Program *AddNewProgram(); 00150 00151 }; 00152 00153 class SERVICE_PUBLIC Program : public QObject 00154 { 00155 Q_OBJECT 00156 Q_CLASSINFO( "version" , "1.11" ); 00157 Q_CLASSINFO( "defaultProp", "Description" ); 00158 00159 Q_PROPERTY( QDateTime StartTime READ StartTime WRITE setStartTime ) 00160 Q_PROPERTY( QDateTime EndTime READ EndTime WRITE setEndTime ) 00161 Q_PROPERTY( QString Title READ Title WRITE setTitle ) 00162 Q_PROPERTY( QString SubTitle READ SubTitle WRITE setSubTitle ) 00163 Q_PROPERTY( QString Category READ Category WRITE setCategory ) 00164 Q_PROPERTY( QString CatType READ CatType WRITE setCatType ) 00165 Q_PROPERTY( bool Repeat READ Repeat WRITE setRepeat ) 00166 Q_PROPERTY( int VideoProps READ VideoProps WRITE setVideoProps) 00167 Q_PROPERTY( int AudioProps READ AudioProps WRITE setAudioProps) 00168 Q_PROPERTY( int SubProps READ SubProps WRITE setSubProps ) 00169 00170 Q_PROPERTY( QString SeriesId READ SeriesId WRITE setSeriesId DESIGNABLE SerializeDetails ) 00171 Q_PROPERTY( QString ProgramId READ ProgramId WRITE setProgramId DESIGNABLE SerializeDetails ) 00172 Q_PROPERTY( double Stars READ Stars WRITE setStars DESIGNABLE SerializeDetails ) 00173 Q_PROPERTY( qlonglong FileSize READ FileSize WRITE setFileSize DESIGNABLE SerializeDetails ) 00174 Q_PROPERTY( QDateTime LastModified READ LastModified WRITE setLastModified DESIGNABLE SerializeDetails ) 00175 Q_PROPERTY( int ProgramFlags READ ProgramFlags WRITE setProgramFlags DESIGNABLE SerializeDetails ) 00176 Q_PROPERTY( QString FileName READ FileName WRITE setFileName DESIGNABLE SerializeDetails ) 00177 Q_PROPERTY( QString HostName READ HostName WRITE setHostName DESIGNABLE SerializeDetails ) 00178 Q_PROPERTY( QDate Airdate READ Airdate WRITE setAirdate DESIGNABLE SerializeDetails ) 00179 Q_PROPERTY( QString Description READ Description WRITE setDescription DESIGNABLE SerializeDetails ) 00180 Q_PROPERTY( QString Inetref READ Inetref WRITE setInetref DESIGNABLE SerializeDetails ) 00181 Q_PROPERTY( int Season READ Season WRITE setSeason DESIGNABLE SerializeDetails ) 00182 Q_PROPERTY( int Episode READ Episode WRITE setEpisode DESIGNABLE SerializeDetails ) 00183 00184 Q_PROPERTY( QObject* Channel READ Channel DESIGNABLE SerializeChannel ) 00185 Q_PROPERTY( QObject* Recording READ Recording DESIGNABLE SerializeRecording ) 00186 Q_PROPERTY( QObject* Artwork READ Artwork DESIGNABLE SerializeArtwork ) 00187 00188 PROPERTYIMP ( QDateTime , StartTime ) 00189 PROPERTYIMP ( QDateTime , EndTime ) 00190 PROPERTYIMP ( QString , Title ) 00191 PROPERTYIMP ( QString , SubTitle ) 00192 PROPERTYIMP ( QString , Category ) 00193 PROPERTYIMP ( QString , CatType ) 00194 PROPERTYIMP ( bool , Repeat ) 00195 00196 PROPERTYIMP ( QString , SeriesId ) 00197 PROPERTYIMP ( QString , ProgramId ) 00198 PROPERTYIMP ( double , Stars ) 00199 PROPERTYIMP ( qlonglong , FileSize ) 00200 PROPERTYIMP ( QDateTime , LastModified ) 00201 PROPERTYIMP ( int , ProgramFlags ) 00202 PROPERTYIMP ( int , VideoProps ) 00203 PROPERTYIMP ( int , AudioProps ) 00204 PROPERTYIMP ( int , SubProps ) 00205 PROPERTYIMP ( QString , FileName ) 00206 PROPERTYIMP ( QString , HostName ) 00207 PROPERTYIMP ( QDate , Airdate ) 00208 PROPERTYIMP ( QString , Description ) 00209 PROPERTYIMP ( QString , Inetref ) 00210 PROPERTYIMP ( int , Season ) 00211 PROPERTYIMP ( int , Episode ) 00212 00213 PROPERTYIMP_PTR( ChannelInfo , Channel ) 00214 PROPERTYIMP_PTR( RecordingInfo , Recording ) 00215 PROPERTYIMP_PTR( ArtworkInfoList, Artwork ) 00216 00217 // Used only by Serializer 00218 PROPERTYIMP( bool, SerializeDetails ) 00219 PROPERTYIMP( bool, SerializeChannel ) 00220 PROPERTYIMP( bool, SerializeRecording ) 00221 PROPERTYIMP( bool, SerializeArtwork ) 00222 00223 public: 00224 00225 static void InitializeCustomTypes() 00226 { 00227 qRegisterMetaType< Program >(); 00228 qRegisterMetaType< Program* >(); 00229 00230 if (QMetaType::type( "DTC::ChannelInfo" ) == 0) 00231 ChannelInfo::InitializeCustomTypes(); 00232 00233 if (QMetaType::type( "DTC::RecordingInfo" ) == 0) 00234 RecordingInfo::InitializeCustomTypes(); 00235 00236 if (QMetaType::type( "DTC::ArtworkInfoList" ) == 0) 00237 ArtworkInfoList::InitializeCustomTypes(); 00238 } 00239 00240 public: 00241 00242 Program(QObject *parent = 0) 00243 : QObject ( parent ), 00244 m_Repeat ( false ), 00245 m_Stars ( 0 ), 00246 m_FileSize ( 0 ), 00247 m_ProgramFlags ( 0 ), 00248 m_VideoProps ( 0 ), 00249 m_AudioProps ( 0 ), 00250 m_SubProps ( 0 ), 00251 m_Season ( 0 ), 00252 m_Episode ( 0 ), 00253 m_Channel ( NULL ), 00254 m_Recording ( NULL ), 00255 m_Artwork ( NULL ), 00256 m_SerializeDetails ( true ), 00257 m_SerializeChannel ( true ), 00258 m_SerializeRecording ( true ), 00259 m_SerializeArtwork ( true ) 00260 { 00261 } 00262 00263 Program( const Program &src ) 00264 { 00265 Copy( src ); 00266 } 00267 00268 void Copy( const Program &src ) 00269 { 00270 m_StartTime = src.m_StartTime; 00271 m_EndTime = src.m_EndTime; 00272 m_Title = src.m_Title; 00273 m_SubTitle = src.m_SubTitle; 00274 m_Category = src.m_Category; 00275 m_CatType = src.m_CatType; 00276 m_Repeat = src.m_Repeat; 00277 m_SeriesId = src.m_SeriesId; 00278 m_ProgramId = src.m_ProgramId; 00279 m_Stars = src.m_Stars; 00280 m_FileSize = src.m_FileSize; 00281 m_LastModified = src.m_LastModified; 00282 m_ProgramFlags = src.m_ProgramFlags; 00283 m_VideoProps = src.m_VideoProps; 00284 m_AudioProps = src.m_AudioProps; 00285 m_SubProps = src.m_SubProps; 00286 m_FileName = src.m_FileName; 00287 m_HostName = src.m_HostName; 00288 m_Airdate = src.m_Airdate; 00289 m_Description = src.m_Description; 00290 m_Inetref = src.m_Inetref; 00291 m_Season = src.m_Season; 00292 m_Episode = src.m_Episode; 00293 m_SerializeDetails = src.m_SerializeDetails; 00294 m_SerializeChannel = src.m_SerializeChannel; 00295 m_SerializeRecording= src.m_SerializeRecording; 00296 m_SerializeArtwork = src.m_SerializeArtwork; 00297 00298 if ( src.m_Channel != NULL) 00299 Channel()->Copy( src.m_Channel ); 00300 00301 if ( src.m_Recording != NULL) 00302 Recording()->Copy( src.m_Recording ); 00303 00304 if ( src.m_Artwork != NULL) 00305 Artwork()->Copy( src.m_Artwork ); 00306 } 00307 00308 }; 00309 00310 inline Program *ChannelInfo::AddNewProgram() 00311 { 00312 // We must make sure the object added to the QVariantList has 00313 // a parent of 'this' 00314 00315 Program *pObject = new Program( this ); 00316 m_Programs.append( QVariant::fromValue<QObject *>( pObject )); 00317 00318 return pObject; 00319 } 00320 00321 inline void ChannelInfo::InitializeCustomTypes() 00322 { 00323 qRegisterMetaType< ChannelInfo >(); 00324 qRegisterMetaType< ChannelInfo* >(); 00325 00326 if (QMetaType::type( "DTC::Program" ) == 0) 00327 Program::InitializeCustomTypes(); 00328 } 00329 00330 00331 } // namespace DTC 00332 00333 Q_DECLARE_METATYPE( DTC::Program ) 00334 Q_DECLARE_METATYPE( DTC::Program* ) 00335 00336 Q_DECLARE_METATYPE( DTC::ChannelInfo ) 00337 Q_DECLARE_METATYPE( DTC::ChannelInfo* ) 00338 00339 #endif
1.7.6.1