Source code of Windows XP (NT5)
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

405 lines
12 KiB

  1. // ActionPolicyScopeItem.cpp: implementation of the CActionPolicyScopeItem class.
  2. //
  3. //////////////////////////////////////////////////////////////////////
  4. #include "stdafx.h"
  5. #include "snapin.h"
  6. #include "ActionPolicyScopeItem.h"
  7. #include "ActionPolicyResultsView.h"
  8. #include "ResultsPane.h"
  9. #include "HMListViewColumn.h"
  10. #include "ActionScopeItem.h"
  11. #include "ActionPolicy.h"
  12. #ifdef _DEBUG
  13. #undef THIS_FILE
  14. static char THIS_FILE[]=__FILE__;
  15. #define new DEBUG_NEW
  16. #endif
  17. // {EF423183-CA9B-11d2-BD8E-0000F87A3912}
  18. static GUID GUID_ActionPolicy =
  19. { 0xef423183, 0xca9b, 0x11d2, { 0xbd, 0x8e, 0x0, 0x0, 0xf8, 0x7a, 0x39, 0x12 } };
  20. IMPLEMENT_DYNCREATE(CActionPolicyScopeItem,CHMScopeItem)
  21. //////////////////////////////////////////////////////////////////////
  22. // Construction/Destruction
  23. //////////////////////////////////////////////////////////////////////
  24. CActionPolicyScopeItem::CActionPolicyScopeItem()
  25. {
  26. m_lpguidItemType = &GUID_ActionPolicy;
  27. }
  28. CActionPolicyScopeItem::~CActionPolicyScopeItem()
  29. {
  30. Destroy();
  31. }
  32. //////////////////////////////////////////////////////////////////////
  33. // Creation Members
  34. //////////////////////////////////////////////////////////////////////
  35. bool CActionPolicyScopeItem::Create(CScopePane* pScopePane, CScopePaneItem* pParentItem)
  36. {
  37. TRACEX(_T("CActionPolicyScopeItem::Create\n"));
  38. TRACEARGn(pScopePane);
  39. TRACEARGn(pParentItem);
  40. // set up all the icons first
  41. //m_IconResIds.Add(IDI_ICON_ACTION);
  42. //m_OpenIconResIds.Add(IDI_ICON_ACTION);
  43. // v-marfin 59492 : Since the icons are handled according to a state code sequence of:
  44. // 0 = good
  45. // 1 = collecting
  46. // 2 = reset
  47. // 3 = info
  48. // 4 = disabled
  49. // 5 = scheduled outage
  50. // 6 = unknown
  51. //
  52. // Set the icon table accordingly. Note that for Actions the only used icons are
  53. // for position 0,4 and 5 so set the other icons to the normal state.
  54. for (int x=0;x<7; x++)
  55. {
  56. m_IconResIds.SetAtGrow(x,IDI_ICON_ACTION);
  57. m_OpenIconResIds.SetAtGrow(x,IDI_ICON_ACTION);
  58. }
  59. m_IconResIds.SetAtGrow(HMS_DISABLED,IDI_ICON_ACTIONS_DISABLED);
  60. m_OpenIconResIds.SetAtGrow(HMS_DISABLED,IDI_ICON_ACTIONS_DISABLED);
  61. //-------------------------------------------------------------------------------------------
  62. SetIconIndex(0);
  63. SetOpenIconIndex(0);
  64. // v-marfin: 59492 ---------------------------------------------------------------------------
  65. // Shouldn't this be set to the current state? -------------------------------------
  66. //SetIconIndex(GetObjectPtr()->GetState());
  67. //SetOpenIconIndex(GetObjectPtr()->GetState());
  68. // -------------------------------------------------------------------------------------------
  69. // call base class Create method
  70. if( ! CScopePaneItem::Create(pScopePane,pParentItem) )
  71. {
  72. TRACE(_T("CScopePaneItem::Create failed.\n"));
  73. return false;
  74. }
  75. // set display names
  76. CString sName;
  77. sName.LoadString(IDS_STRING_ACTIONPOLICY);
  78. SetDisplayName(0,sName);
  79. return true;
  80. }
  81. //////////////////////////////////////////////////////////////////////
  82. // Results Pane View Members
  83. //////////////////////////////////////////////////////////////////////
  84. CResultsPaneView* CActionPolicyScopeItem::CreateResultsPaneView()
  85. {
  86. TRACEX(_T("CActionPolicyScopeItem::CreateResultsPaneView\n"));
  87. return new CActionPolicyResultsView;
  88. }
  89. //////////////////////////////////////////////////////////////////////
  90. // MMC Notify Handlers
  91. //////////////////////////////////////////////////////////////////////
  92. HRESULT CActionPolicyScopeItem::OnAddMenuItems(LPCONTEXTMENUCALLBACK piCallback,long __RPC_FAR *pInsertionAllowed)
  93. {
  94. TRACEX(_T("CActionPolicyScopeItem::OnAddMenuItems\n"));
  95. TRACEARGn(piCallback);
  96. TRACEARGn(pInsertionAllowed);
  97. HRESULT hr = S_OK;
  98. // Add New Menu Items
  99. if( CCM_INSERTIONALLOWED_NEW & *pInsertionAllowed )
  100. {
  101. CONTEXTMENUITEM cmi;
  102. CString sResString;
  103. CString sResString2;
  104. // Command Line
  105. sResString.LoadString(IDS_STRING_ACTION_CMDLINE);
  106. cmi.strName = LPTSTR(LPCTSTR(sResString));
  107. sResString2.LoadString(IDS_STRING_ACTION_CMDLINE_DESC);
  108. cmi.strStatusBarText = LPTSTR(LPCTSTR(sResString2));
  109. cmi.lCommandID = IDM_ACTION_CMDLINE;
  110. cmi.lInsertionPointID = CCM_INSERTIONPOINTID_PRIMARY_NEW;
  111. cmi.fFlags = 0;
  112. cmi.fSpecialFlags = 0;
  113. hr = piCallback->AddItem(&cmi);
  114. if( !SUCCEEDED(hr) )
  115. {
  116. TRACE(_T("FAILED : IContextMenuCallback::AddItem failed.\n"));
  117. return hr;
  118. }
  119. // Email
  120. sResString.LoadString(IDS_STRING_ACTION_EMAIL);
  121. cmi.strName = LPTSTR(LPCTSTR(sResString));
  122. sResString2.LoadString(IDS_STRING_ACTION_EMAIL_DESC);
  123. cmi.strStatusBarText = LPTSTR(LPCTSTR(sResString2));
  124. cmi.lCommandID = IDM_ACTION_EMAIL;
  125. cmi.lInsertionPointID = CCM_INSERTIONPOINTID_PRIMARY_NEW;
  126. cmi.fFlags = 0;
  127. cmi.fSpecialFlags = 0;
  128. hr = piCallback->AddItem(&cmi);
  129. if( !SUCCEEDED(hr) )
  130. {
  131. TRACE(_T("FAILED : IContextMenuCallback::AddItem failed.\n"));
  132. return hr;
  133. }
  134. // LogFile
  135. sResString.LoadString(IDS_STRING_ACTION_LOGFILE);
  136. cmi.strName = LPTSTR(LPCTSTR(sResString));
  137. sResString2.LoadString(IDS_STRING_ACTION_TEXTLOG_DESC);
  138. cmi.strStatusBarText = LPTSTR(LPCTSTR(sResString2));
  139. cmi.lCommandID = IDM_ACTION_LOGFILE;
  140. cmi.lInsertionPointID = CCM_INSERTIONPOINTID_PRIMARY_NEW;
  141. cmi.fFlags = 0;
  142. cmi.fSpecialFlags = 0;
  143. hr = piCallback->AddItem(&cmi);
  144. if( !SUCCEEDED(hr) )
  145. {
  146. TRACE(_T("FAILED : IContextMenuCallback::AddItem failed.\n"));
  147. return hr;
  148. }
  149. // NT Event
  150. sResString.LoadString(IDS_STRING_ACTION_NTEVENT);
  151. cmi.strName = LPTSTR(LPCTSTR(sResString));
  152. sResString2.LoadString(IDS_STRING_ACTION_NTEVENT_DESC);
  153. cmi.strStatusBarText = LPTSTR(LPCTSTR(sResString2));
  154. cmi.lCommandID = IDM_ACTION_NTEVENT;
  155. cmi.lInsertionPointID = CCM_INSERTIONPOINTID_PRIMARY_NEW;
  156. cmi.fFlags = 0;
  157. cmi.fSpecialFlags = 0;
  158. hr = piCallback->AddItem(&cmi);
  159. if( !SUCCEEDED(hr) )
  160. {
  161. TRACE(_T("FAILED : IContextMenuCallback::AddItem failed.\n"));
  162. return hr;
  163. }
  164. // Script
  165. sResString.LoadString(IDS_STRING_ACTION_SCRIPT);
  166. cmi.strName = LPTSTR(LPCTSTR(sResString));
  167. sResString2.LoadString(IDS_STRING_ACTION_SCRIPT_DESC);
  168. cmi.strStatusBarText = LPTSTR(LPCTSTR(sResString2));
  169. cmi.lCommandID = IDM_ACTION_SCRIPT;
  170. cmi.lInsertionPointID = CCM_INSERTIONPOINTID_PRIMARY_NEW;
  171. cmi.fFlags = 0;
  172. cmi.fSpecialFlags = 0;
  173. hr = piCallback->AddItem(&cmi);
  174. if( !SUCCEEDED(hr) )
  175. {
  176. TRACE(_T("FAILED : IContextMenuCallback::AddItem failed.\n"));
  177. return hr;
  178. }
  179. /*
  180. // Paging
  181. sResString.LoadString(IDS_STRING_ACTION_PAGING);
  182. cmi.strName = LPTSTR(LPCTSTR(sResString));
  183. cmi.strStatusBarText = NULL;
  184. cmi.lCommandID = IDM_ACTION_PAGING;
  185. cmi.lInsertionPointID = CCM_INSERTIONPOINTID_PRIMARY_NEW;
  186. cmi.fFlags = 0;
  187. cmi.fSpecialFlags = 0;
  188. hr = piCallback->AddItem(&cmi);
  189. if( !SUCCEEDED(hr) )
  190. {
  191. TRACE(_T("FAILED : IContextMenuCallback::AddItem failed.\n"));
  192. return hr;
  193. }
  194. */
  195. } // if( CCM_INSERTIONALLOWED_NEW & *pInsertionAllowed )
  196. // Add Task Menu Items
  197. if( CCM_INSERTIONALLOWED_TASK & *pInsertionAllowed )
  198. {
  199. CONTEXTMENUITEM cmi;
  200. CString sResString;
  201. CString sResString2;
  202. // clear events
  203. sResString.LoadString(IDS_STRING_CLEAR_EVENTS);
  204. cmi.strName = LPTSTR(LPCTSTR(sResString));
  205. sResString2.LoadString(IDS_STRING_CLEAR_EVENTS_DESCRIPTION);
  206. cmi.strStatusBarText = LPTSTR(LPCTSTR(sResString2));
  207. cmi.lCommandID = IDM_CLEAR_EVENTS;
  208. cmi.lInsertionPointID = CCM_INSERTIONPOINTID_PRIMARY_TASK;
  209. cmi.fFlags = 0;
  210. cmi.fSpecialFlags = 0;
  211. hr = piCallback->AddItem(&cmi);
  212. if( !SUCCEEDED(hr) )
  213. {
  214. TRACE(_T("FAILED : IContextMenuCallback::AddItem failed.\n"));
  215. return hr;
  216. }
  217. // v-marfin 59492 ----------------------------------------------------
  218. // Remove the 'disable' item from the Actions context menu for now.
  219. /* sResString.LoadString(IDS_STRING_DISABLE_ACTIONS);
  220. cmi.strName = LPTSTR(LPCTSTR(sResString));
  221. sResString2.LoadString(IDS_STRING_DISABLE_ACTIONS_DESC);
  222. cmi.strStatusBarText = LPTSTR(LPCTSTR(sResString2));
  223. cmi.lCommandID = IDM_DISABLE_ACTIONS;
  224. cmi.lInsertionPointID = CCM_INSERTIONPOINTID_PRIMARY_TASK;
  225. cmi.fFlags = 0;
  226. cmi.fSpecialFlags = 0;
  227. hr = piCallback->AddItem(&cmi);
  228. if( !SUCCEEDED(hr) )
  229. {
  230. TRACE(_T("FAILED : IContextMenuCallback::AddItem failed.\n"));
  231. return hr;
  232. }*/
  233. //------------------------------------------------------------------
  234. // separator
  235. cmi.strName = NULL;
  236. cmi.strStatusBarText = NULL;
  237. cmi.lCommandID = NULL;
  238. cmi.lInsertionPointID = CCM_INSERTIONPOINTID_PRIMARY_TASK;
  239. cmi.fFlags = MF_SEPARATOR;
  240. cmi.fSpecialFlags = 0;
  241. hr = piCallback->AddItem(&cmi);
  242. if( !SUCCEEDED(hr) )
  243. {
  244. TRACE(_T("FAILED : IContextMenuCallback::AddItem failed.\n"));
  245. return hr;
  246. }
  247. } // if( CCM_INSERTIONALLOWED_TASK & *pInsertionAllowed )
  248. // Add View Menu Items
  249. if( CCM_INSERTIONALLOWED_VIEW & *pInsertionAllowed )
  250. {
  251. CONTEXTMENUITEM cmi;
  252. CString sResString;
  253. CString sResString2;
  254. sResString.LoadString(IDS_STRING_STATUS_ONLY);
  255. cmi.strName = LPTSTR(LPCTSTR(sResString));
  256. sResString2.LoadString(IDS_STRING_STATUS_ONLY_DESCRIPTION);
  257. cmi.strStatusBarText = LPTSTR(LPCTSTR(sResString2));
  258. cmi.lCommandID = IDM_STATUS_ONLY;
  259. cmi.lInsertionPointID = CCM_INSERTIONPOINTID_PRIMARY_VIEW;
  260. cmi.fFlags = MF_UNCHECKED;
  261. cmi.fSpecialFlags = 0;
  262. hr = piCallback->AddItem(&cmi);
  263. if( !SUCCEEDED(hr) )
  264. {
  265. TRACE(_T("FAILED : IContextMenuCallback::AddItem failed.\n"));
  266. return hr;
  267. }
  268. sResString.LoadString(IDS_STRING_ICONS_STATUS);
  269. cmi.strName = LPTSTR(LPCTSTR(sResString));
  270. sResString2.LoadString(IDS_STRING_ICONS_STATUS_DESCRIPTION);
  271. cmi.strStatusBarText = LPTSTR(LPCTSTR(sResString2));
  272. cmi.lCommandID = IDM_ICONS_WITH_STATUS;
  273. cmi.lInsertionPointID = CCM_INSERTIONPOINTID_PRIMARY_VIEW;
  274. cmi.fFlags = MF_CHECKED;
  275. cmi.fSpecialFlags = 0;
  276. hr = piCallback->AddItem(&cmi);
  277. if( !SUCCEEDED(hr) )
  278. {
  279. TRACE(_T("FAILED : IContextMenuCallback::AddItem failed.\n"));
  280. return hr;
  281. }
  282. // icon legend
  283. sResString.LoadString(IDS_STRING_ICON_LEGEND);
  284. cmi.strName = LPTSTR(LPCTSTR(sResString));
  285. sResString2.LoadString(IDS_STRING_ICON_LEGEND_DESCRIPTION);
  286. cmi.strStatusBarText = LPTSTR(LPCTSTR(sResString2));
  287. cmi.lCommandID = IDM_ICON_LEGEND;
  288. cmi.lInsertionPointID = CCM_INSERTIONPOINTID_PRIMARY_VIEW;
  289. cmi.fFlags = 0;
  290. cmi.fSpecialFlags = 0;
  291. hr = piCallback->AddItem(&cmi);
  292. if( !SUCCEEDED(hr) )
  293. {
  294. TRACE(_T("FAILED : IContextMenuCallback::AddItem failed.\n"));
  295. return hr;
  296. }
  297. }
  298. return hr;
  299. }
  300. HRESULT CActionPolicyScopeItem::OnCommand(long lCommandID)
  301. {
  302. TRACEX(_T("CActionPolicyScopeItem::OnCommand\n"));
  303. TRACEARGn(lCommandID);
  304. HRESULT hr = S_OK;
  305. switch(lCommandID)
  306. {
  307. case IDM_ACTION_CMDLINE:
  308. case IDM_ACTION_EMAIL:
  309. case IDM_ACTION_LOGFILE:
  310. case IDM_ACTION_NTEVENT:
  311. case IDM_ACTION_SCRIPT:
  312. case IDM_ACTION_PAGING:
  313. {
  314. CActionPolicy* pPolicy = (CActionPolicy*)GetObjectPtr();
  315. if( ! GfxCheckObjPtr(pPolicy,CActionPolicy) )
  316. {
  317. return E_FAIL;
  318. }
  319. pPolicy->CreateNewChildAction(lCommandID);
  320. }
  321. break;
  322. case IDM_CLEAR_EVENTS:
  323. {
  324. // v-marfin 59492
  325. TRACE(_T("CActionPolicyScopeItem::OnCommand - IDM_CLEAR_EVENTS Received\n"));
  326. }
  327. break;
  328. case IDM_DISABLE_ACTIONS:
  329. {
  330. // v-marfin 59492
  331. TRACE(_T("CActionPolicyScopeItem::OnCommand - IDM_DISABLE_ACTIONS Received\n"));
  332. }
  333. break;
  334. }
  335. return hr;
  336. }