hxtac.h
上传用户:zhongxx05
上传日期:2007-06-06
资源大小:33641k
文件大小:5k
源码类别:

Symbian

开发平台:

C/C++

  1. /* ***** BEGIN LICENSE BLOCK ***** 
  2.  * Version: RCSL 1.0/RPSL 1.0 
  3.  *  
  4.  * Portions Copyright (c) 1995-2002 RealNetworks, Inc. All Rights Reserved. 
  5.  *      
  6.  * The contents of this file, and the files included with this file, are 
  7.  * subject to the current version of the RealNetworks Public Source License 
  8.  * Version 1.0 (the "RPSL") available at 
  9.  * http://www.helixcommunity.org/content/rpsl unless you have licensed 
  10.  * the file under the RealNetworks Community Source License Version 1.0 
  11.  * (the "RCSL") available at http://www.helixcommunity.org/content/rcsl, 
  12.  * in which case the RCSL will apply. You may also obtain the license terms 
  13.  * directly from RealNetworks.  You may not use this file except in 
  14.  * compliance with the RPSL or, if you have a valid RCSL with RealNetworks 
  15.  * applicable to this file, the RCSL.  Please see the applicable RPSL or 
  16.  * RCSL for the rights, obligations and limitations governing use of the 
  17.  * contents of the file.  
  18.  *  
  19.  * This file is part of the Helix DNA Technology. RealNetworks is the 
  20.  * developer of the Original Code and owns the copyrights in the portions 
  21.  * it created. 
  22.  *  
  23.  * This file, and the files included with this file, is distributed and made 
  24.  * available on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER 
  25.  * EXPRESS OR IMPLIED, AND REALNETWORKS HEREBY DISCLAIMS ALL SUCH WARRANTIES, 
  26.  * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY, FITNESS 
  27.  * FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT. 
  28.  * 
  29.  * Technology Compatibility Kit Test Suite(s) Location: 
  30.  *    http://www.helixcommunity.org/content/tck 
  31.  * 
  32.  * Contributor(s): 
  33.  *  
  34.  * ***** END LICENSE BLOCK ***** */ 
  35. #ifndef _MASTERTAC_H_
  36. #define _MASTERTAC_H_
  37. typedef enum _TACStatus
  38. {
  39.     TAC_Pending = 0,
  40.     TAC_Source = 1,
  41.     TAC_Track = 2,
  42.     TAC_Group = 3
  43. } TACStatus;
  44. #define NUMB_TAC_NAMES 6
  45. // forward class declares
  46. class HXPlayer;
  47. class HXClientRegistry;
  48. class HXBasicGroupManager;
  49. // HXMasterTAC class definition
  50. class HXMasterTAC 
  51. #if defined(HELIX_FEATURE_REGISTRY)
  52. : public IHXPropWatchResponse
  53. #endif /* HELIX_FEATURE_REGISTRY */
  54. {
  55. public:
  56.     HXMasterTAC(HXBasicGroupManager* pGroupManager);
  57.     virtual ~HXMasterTAC();
  58.     void SetRegistry(HXClientRegistry* pRegistry, UINT32 ID);
  59.     void SetTAC(IHXValues* tacProps, TACStatus status);
  60.     void ResetTAC(BOOL bResetStatus = TRUE, BOOL bClearMasterProps = FALSE);
  61.     BOOL CheckTrackAndSourceOnTrackStarted(INT32 nGroup, INT32 nTrack, UINT32 sourceID);
  62.     BOOL CheckTrackForTACInfo(INT32 nGroup, INT32 nTrack);
  63.     BOOL CheckSourceForTACInfo(INT32 nGroup, INT32 nTrack, UINT32 sourceID);
  64.     BOOL CheckGroupForTACInfo(INT32 nGroup);
  65.     BOOL IsTACComplete(IHXValues* pProps);
  66.     void Close();
  67. protected:
  68.     LONG32 m_lRefCount;
  69. public:
  70.     /*
  71.      * IUnknown methods
  72.      */
  73.     STDMETHOD(QueryInterface) (THIS_
  74. REFIID riid,
  75. void** ppvObj);
  76.     STDMETHOD_(ULONG32,AddRef) (THIS);
  77.     STDMETHOD_(ULONG32,Release) (THIS);
  78. #if defined(HELIX_FEATURE_REGISTRY)
  79.     //IHXPropWatchResponse methods
  80.     STDMETHOD(AddedProp) (THIS_
  81. const UINT32 id,
  82. const HXPropType    propType,
  83. const UINT32 ulParentHash);
  84.     STDMETHOD(ModifiedProp) (THIS_
  85. const UINT32 id,
  86. const HXPropType    propType,
  87. const UINT32 ulParentHash);
  88.     STDMETHOD(DeletedProp) (THIS_
  89. const UINT32 id,
  90. const UINT32 ulParentHash);
  91. #endif /* HELIX_FEATURE_REGISTRY */
  92. private:
  93. #if defined(HELIX_FEATURE_REGISTRY)
  94.     HXClientRegistry* m_pRegistry;
  95. #endif /* HELIX_FEATURE_REGISTRY */
  96.     HXBasicGroupManager* m_pGroupManager;
  97.     IHXValues* m_pTACProps;
  98.     TACStatus m_tacStatus;
  99.     IHXPropWatch* m_pTACPropWatch;
  100.     //UINT32 m_tacPropIDs[4];
  101.     CHXSimpleList* m_ptacPropIDs;
  102.     UINT32              m_masterTACPropIDs[NUMB_TAC_NAMES];
  103.     void    RetrieveTACProperties(IHXValues* pFromProps);
  104. };
  105. // TAC data class
  106. class TACData
  107. {
  108. public:
  109.     TACData()
  110.     {
  111. m_titleID = 0;
  112. m_authorID = 0;
  113. m_copyrightID = 0;
  114. m_abstractID = 0;
  115. m_keywordsID = 0;
  116. m_descriptionID = 0;
  117.     }
  118.     UINT32 FindMasterIndex(UINT32 sourcePropID);
  119.     void ClearAll(IHXPropWatch* pPropWatch);
  120.     BOOL IsIDPresent(UINT32 sourcePropID);
  121.     void Clear(UINT32 sourcePropID);
  122.     void SetPropAndWatch(UINT32 n, UINT32 propID, IHXPropWatch* pPropWatch);
  123.     static const UINT32 NoFind;
  124.     UINT32 m_titleID;
  125.     UINT32 m_authorID;
  126.     UINT32 m_copyrightID;
  127.     UINT32 m_abstractID;
  128.     UINT32 m_keywordsID;
  129.     UINT32 m_descriptionID;
  130. };
  131. #endif // _MASTERTAC_H_