MediaBase.cpp
上传用户:boyawuliu
上传日期:2021-10-14
资源大小:8k
文件大小:3k
源码类别:

TreeView控件

开发平台:

Visual C++

  1. //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
  2. //
  3. // File name : MediaBase.cpp
  4. // Purpose   : Class implement for the base of all media objects
  5. //
  6. //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
  7. #include "MediaBase.h"
  8. #include <iostream>
  9. #include <ios>
  10. using namespace std;
  11. MediaBase::MediaBase(void)
  12. {
  13. m_MediaName = NULL;
  14. m_MediaFile = NULL;
  15. m_KeywordList = new std::list<char*>();
  16. m_ChildList = new std::list<MediaBase*>();
  17. m_Type = -1;
  18. }
  19. MediaBase::~MediaBase(void)
  20. {
  21. if (m_MediaName != NULL)
  22. {
  23. delete m_MediaName;
  24. }
  25. if (m_MediaFile != NULL)
  26. {
  27. delete m_MediaFile;
  28. }
  29. if (m_KeywordList != NULL)
  30. {
  31. m_KeywordList->clear();
  32. delete m_KeywordList;
  33. }
  34. if (m_ChildList != NULL)
  35. {
  36. m_ChildList->clear();
  37. delete m_ChildList;
  38. }
  39. }
  40. void MediaBase::SetMediaName(char* mediaName)
  41. {
  42. if (m_MediaName != NULL)
  43. {
  44. delete m_MediaName;
  45. }
  46. this->m_MediaName = mediaName;
  47. }
  48. char* MediaBase::GetMediaName()
  49. {
  50. return m_MediaName;
  51. }
  52. void MediaBase::SetMediaFile(char* mediaFile)
  53. {
  54. if (m_MediaFile != NULL)
  55. {
  56. delete m_MediaFile;
  57. }
  58. this->m_MediaFile = mediaFile;
  59. }
  60. char* MediaBase::GetMediaFile()
  61. {
  62. return m_MediaFile;
  63. }
  64. void MediaBase::AddKeyword(char* keyword)
  65. {
  66. m_KeywordList->push_back(keyword);
  67. }
  68. std::list<MediaBase*>* MediaBase::GetChildList()
  69. {
  70. return m_ChildList;
  71. };
  72. int MediaBase::GetMediaType()
  73. {
  74. return m_Type;
  75. }
  76. MediaBase* MediaBase::GetMediaByName(char* name)
  77. {
  78. MediaBase* result = NULL;
  79. if ((this->m_MediaName == NULL && name == NULL) || (strcmp(this->m_MediaName, name) == 0))
  80. {
  81. return this;
  82. }
  83. else
  84. {
  85. if (m_ChildList != NULL)
  86. {
  87. for(list<MediaBase*>::iterator i = m_ChildList->begin(); i != m_ChildList->end(); i++)
  88. {
  89. MediaBase* child = *i;
  90. result = child->GetMediaByName(name);
  91. if (result != NULL)
  92. return result;
  93. }
  94. }
  95. else
  96. {
  97. return NULL;
  98. }
  99. }
  100. return result;
  101. }
  102. void MediaBase::PrintMedia()
  103. {
  104. for (int i = 0; i < m_Type; i++)
  105. {
  106. cout << "  ";
  107. }
  108. cout << m_MediaName << endl;
  109. if (m_KeywordList != NULL)
  110. {
  111. int count = (int)m_KeywordList->size();
  112. for(list<char*>::iterator i = m_KeywordList->begin(); i != m_KeywordList->end(); i++)
  113. {
  114. char* keyword = *i;
  115. for (int j = 0; j < m_Type; j++)
  116. {
  117. cout << "  ";
  118. }
  119. cout << "  ";
  120. cout << keyword << endl;
  121. }
  122. }
  123. if (m_ChildList != NULL)
  124. {
  125. for(list<MediaBase*>::iterator i = m_ChildList->begin(); i != m_ChildList->end(); i++)
  126. {
  127. MediaBase* child = *i;
  128. child->PrintMedia();
  129. }
  130. }
  131. }