GroupDialog.cpp 7.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244
  1. //===========================================================================//
  2. // Copyright (C) Microsoft Corporation. All rights reserved. //
  3. //===========================================================================//
  4. // GroupDialog.cpp : implementation file
  5. //
  6. #include "stdafx.h"
  7. //include "CampaignEditor.h"
  8. #include "resource.h"
  9. #include "GroupDialog.h"
  10. #include "CampaignData.h"
  11. #include "MissionDialog.h"
  12. #include "../MCLib/Paths.h"
  13. #include "assert.h"
  14. #ifdef _DEBUG
  15. #define new DEBUG_NEW
  16. #undef THIS_FILE
  17. static char THIS_FILE[] = __FILE__;
  18. #endif
  19. /////////////////////////////////////////////////////////////////////////////
  20. // CGroupDialog dialog
  21. CGroupDialog::CGroupDialog(CWnd* pParent /*=NULL*/)
  22. : CDialog(CGroupDialog::IDD, pParent)
  23. {
  24. //{{AFX_DATA_INIT(CGroupDialog)
  25. m_OperationFileEdit = _T("");
  26. m_PreVideoFileEdit = _T("");
  27. m_VideoFileEdit = _T("");
  28. m_LabelEdit = _T("");
  29. m_NumMissionsToCompleteEdit = 0;
  30. //}}AFX_DATA_INIT
  31. }
  32. void CGroupDialog::DoDataExchange(CDataExchange* pDX)
  33. {
  34. CDialog::DoDataExchange(pDX);
  35. //{{AFX_DATA_MAP(CGroupDialog)
  36. DDX_Control(pDX, IDC_GR_TUNE_COMBO, m_TuneComboControl);
  37. DDX_Control(pDX, IDC_GR_MISSION_LIST, m_MissionListControl);
  38. DDX_Text(pDX, IDC_GR_OPERATION_FILE_EDIT, m_OperationFileEdit);
  39. DDX_Text(pDX, IDC_GR_PREVIDEO_FILE_EDIT, m_PreVideoFileEdit);
  40. DDX_Text(pDX, IDC_GR_VIDEO_FILE_EDIT, m_VideoFileEdit);
  41. DDX_Text(pDX, IDC_GR_LABEL_EDIT, m_LabelEdit);
  42. DDX_Text(pDX, IDC_GR_NUM_MISSIONS_TO_COMPLETE_EDIT, m_NumMissionsToCompleteEdit);
  43. //}}AFX_DATA_MAP
  44. }
  45. BEGIN_MESSAGE_MAP(CGroupDialog, CDialog)
  46. //{{AFX_MSG_MAP(CGroupDialog)
  47. ON_BN_CLICKED(IDC_GR_OPERATION_FILE_BROWSE_BUTTON, OnGrOperationFileBrowseButton)
  48. ON_BN_CLICKED(IDC_GR_PREVIDEO_FILE_BROWSE_BUTTON, OnGrPrevideoFileBrowseButton)
  49. ON_BN_CLICKED(IDC_GR_VIDEO_FILE_BROWSE_BUTTON, OnGrVideoFileBrowseButton)
  50. ON_BN_CLICKED(IDC_GR_ADD_BUTTON, OnGrAddButton)
  51. ON_BN_CLICKED(IDC_GR_REMOVE_BUTTON, OnGrRemoveButton)
  52. ON_BN_CLICKED(IDC_GR_EDIT_BUTTON, OnGrEditButton)
  53. //}}AFX_MSG_MAP
  54. END_MESSAGE_MAP()
  55. /////////////////////////////////////////////////////////////////////////////
  56. // CGroupDialog message handlers
  57. void CGroupDialog::OnGrOperationFileBrowseButton() {
  58. UpdateData(TRUE);
  59. while (true) {
  60. CFileDialog selectFileDialog(TRUE,_T("FIT"),_T("*.FIT"),
  61. OFN_HIDEREADONLY|OFN_OVERWRITEPROMPT|OFN_NOCHANGEDIR,
  62. _T("FIT File (*.FIT)|*.FIT|"));
  63. selectFileDialog.m_ofn.lpstrInitialDir = artPath;
  64. if( selectFileDialog.DoModal()==IDOK ) {
  65. CString operationPath = selectFileDialog.GetPathName();
  66. FitIniFile file;
  67. long result = 0;
  68. result = file.open( (char*)(const char*)operationPath );
  69. if (NO_ERR != result) {
  70. AfxMessageBox(IDS_COULDNT_OPEN_OPERATION_FILE);
  71. } else {
  72. long result = 0;
  73. result = file.seekBlock("Button0");
  74. if (NO_ERR != result)
  75. {
  76. AfxMessageBox(IDS_NOT_A_VALID_OPERATION_FILE);
  77. }
  78. file.close();
  79. }
  80. m_OperationFileEdit = selectFileDialog.GetFileTitle();
  81. break;
  82. } else {
  83. break;
  84. }
  85. }
  86. UpdateData(FALSE);
  87. }
  88. void CGroupDialog::OnGrPrevideoFileBrowseButton() {
  89. UpdateData(TRUE);
  90. while (true) {
  91. CFileDialog selectFileDialog(TRUE,_T("AVI"),_T("*.AVI"),
  92. OFN_HIDEREADONLY|OFN_OVERWRITEPROMPT|OFN_NOCHANGEDIR,
  93. _T("Movie (*.AVI)|*.AVI|"));
  94. selectFileDialog.m_ofn.lpstrInitialDir = moviePath;
  95. if( selectFileDialog.DoModal()==IDOK ) {
  96. m_PreVideoFileEdit = selectFileDialog.GetFileTitle();
  97. break;
  98. } else {
  99. break;
  100. }
  101. }
  102. UpdateData(FALSE);
  103. }
  104. void CGroupDialog::OnGrVideoFileBrowseButton() {
  105. UpdateData(TRUE);
  106. while (true) {
  107. CFileDialog selectFileDialog(TRUE,_T("AVI"),_T("*.AVI"),
  108. OFN_HIDEREADONLY|OFN_OVERWRITEPROMPT|OFN_NOCHANGEDIR,
  109. _T("Movie (*.AVI)|*.AVI|"));
  110. selectFileDialog.m_ofn.lpstrInitialDir = moviePath;
  111. if( selectFileDialog.DoModal()==IDOK ) {
  112. m_VideoFileEdit = selectFileDialog.GetFileTitle();
  113. break;
  114. } else {
  115. break;
  116. }
  117. }
  118. UpdateData(FALSE);
  119. }
  120. static void setMissionListBoxValues(CListBox &MissionListBox, const CMissionList &MissionList) {
  121. MissionListBox.ResetContent();
  122. CMissionList::EConstIterator it;
  123. for (it = MissionList.Begin(); !it.IsDone(); it++) {
  124. CString tmpCStr;
  125. tmpCStr = _TEXT("[");
  126. tmpCStr += ((*it).m_MissionFile);
  127. tmpCStr += _TEXT("] ");
  128. MissionListBox.AddString(tmpCStr);
  129. }
  130. }
  131. BOOL CGroupDialog::OnInitDialog()
  132. {
  133. CDialog::OnInitDialog();
  134. setMissionListBoxValues(m_MissionListControl, m_MissionList);
  135. m_TuneComboControl.SetCurSel(m_TuneNumber);
  136. return TRUE; // return TRUE unless you set the focus to a control
  137. // EXCEPTION: OCX Property Pages should return FALSE
  138. }
  139. static void setMissionDialogValues(CMissionDialog &missionDialog, const CMissionData &missionData) {
  140. missionDialog.m_MissionFileEdit = missionData.m_MissionFile;
  141. missionDialog.m_PurchaseFileEdit = missionData.m_PurchaseFile;
  142. missionDialog.m_LogisticsCheck = missionData.m_LogisticsEnabled;
  143. missionDialog.m_MandatoryCheck = missionData.m_IsMandatory;
  144. missionDialog.m_PilotPromotionCheck = missionData.m_PilotPromotionEnabled;
  145. missionDialog.m_PurchasingCheck = missionData.m_PurchasingEnabled;
  146. missionDialog.m_SalvageCheck = missionData.m_SalvageEnabled;
  147. }
  148. static void setMissionDataValues(CMissionData &missionData, const CMissionDialog &missionDialog) {
  149. missionData.m_MissionFile = missionDialog.m_MissionFileEdit;
  150. missionData.m_PurchaseFile = missionDialog.m_PurchaseFileEdit;
  151. missionData.m_LogisticsEnabled = missionDialog.m_LogisticsCheck;
  152. missionData.m_IsMandatory = missionDialog.m_MandatoryCheck;
  153. missionData.m_PilotPromotionEnabled = missionDialog.m_PilotPromotionCheck;
  154. missionData.m_PurchasingEnabled = missionDialog.m_PurchasingCheck;
  155. missionData.m_SalvageEnabled = missionDialog.m_SalvageCheck;
  156. }
  157. void CGroupDialog::OnGrAddButton()
  158. {
  159. CMissionData missionData;
  160. CMissionDialog missionDialog;
  161. setMissionDialogValues(missionDialog, missionData);
  162. int ret = missionDialog.DoModal();
  163. if (IDOK == ret) {
  164. setMissionDataValues(missionData, missionDialog);
  165. m_MissionList.Append(missionData);
  166. UpdateData(TRUE);
  167. setMissionListBoxValues(m_MissionListControl, m_MissionList);
  168. m_MissionListControl.SetCurSel(m_MissionListControl.GetCount() - 1);
  169. UpdateData(FALSE);
  170. }
  171. }
  172. void CGroupDialog::OnGrRemoveButton()
  173. {
  174. unsigned long selectedItemIndex = m_MissionListControl.GetCurSel();
  175. if ((0 <= selectedItemIndex) && (m_MissionList.Count() > selectedItemIndex)) {
  176. // should put up confirmation box here
  177. CMissionList::EIterator it = m_MissionList.Begin();
  178. unsigned long index;
  179. for (index = 0; index < selectedItemIndex; index++) {
  180. it++;
  181. assert(!it.IsDone());
  182. }
  183. m_MissionList.Delete(it);
  184. UpdateData(TRUE);
  185. int selectedItemIndex = m_MissionListControl.GetCurSel();
  186. setMissionListBoxValues(m_MissionListControl, m_MissionList);
  187. if ((LB_ERR != selectedItemIndex) && (0 < m_MissionListControl.GetCount())) {
  188. if (m_MissionListControl.GetCount() <= (long)selectedItemIndex) {
  189. selectedItemIndex = m_MissionListControl.GetCount() - 1;
  190. }
  191. m_MissionListControl.SetCurSel(selectedItemIndex);
  192. }
  193. UpdateData(FALSE);
  194. }
  195. }
  196. void CGroupDialog::OnGrEditButton()
  197. {
  198. unsigned long selectedItemIndex = m_MissionListControl.GetCurSel();
  199. if ((0 <= selectedItemIndex) && (m_MissionList.Count() > selectedItemIndex)) {
  200. CMissionData &missionDataRef = m_MissionList[selectedItemIndex];
  201. CMissionDialog missionDialog;
  202. setMissionDialogValues(missionDialog, missionDataRef);
  203. if (IDOK == missionDialog.DoModal()) {
  204. setMissionDataValues(missionDataRef, missionDialog);
  205. UpdateData(TRUE);
  206. setMissionListBoxValues(m_MissionListControl, m_MissionList);
  207. UpdateData(FALSE);
  208. }
  209. }
  210. }
  211. void CGroupDialog::OnOK()
  212. {
  213. int tmpInt = m_TuneComboControl.GetCurSel();
  214. if ((CB_ERR != tmpInt) && (0 <= tmpInt)) {
  215. m_TuneNumber = m_TuneComboControl.GetCurSel();
  216. }
  217. CDialog::OnOK();
  218. }