MythTV  0.26-pre
programAndChannel.h
Go to the documentation of this file.
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
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends