00001
00002
00003
00004
00005
00006
00007
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
00035
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
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
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
00313
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 }
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