Leaked source code of windows server 2003
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.

294 lines
5.3 KiB

  1. /*++
  2. Copyright (C) Microsoft Corporation, 1996 - 1998
  3. All rights reserved.
  4. Module Name:
  5. Archlv.hxx
  6. Abstract:
  7. Arch List View Header
  8. Author:
  9. Steve Kiraly (SteveKi) 19-Nov-1996
  10. Revision History:
  11. --*/
  12. #ifndef _ARCHLV_HXX
  13. #define _ARCHLV_HXX
  14. /********************************************************************
  15. Architecture list view control.
  16. ********************************************************************/
  17. class TArchLV {
  18. SIGNATURE( 'arlv' )
  19. ALWAYS_VALID
  20. public:
  21. enum EConstants {
  22. kHeaderMax = 3,
  23. kDefaultHeaderWidth = 40,
  24. };
  25. enum {
  26. kArchitectureColumn,
  27. kVersionColumn,
  28. kInstalledColumn,
  29. kMaxColumns,
  30. };
  31. enum {
  32. //
  33. // Listview item states. Bit 12-15 hold the image state.
  34. //
  35. kStateUnchecked = 1 << 12,
  36. kStateChecked = 2 << 12,
  37. kStateDisabled = 3 << 12,
  38. kStateMask = kStateChecked | kStateUnchecked | kStateDisabled | LVIS_STATEIMAGEMASK,
  39. };
  40. enum {
  41. kDriverWIN95 = 1 << 0,
  42. kDriverX86_0 = 1 << 1,
  43. kDriverX86_1 = 1 << 2,
  44. kDriverX86_2 = 1 << 3,
  45. kDriverX86_3 = 1 << 4,
  46. };
  47. struct ArchVerEncode {
  48. INT ArchId;
  49. INT VerId;
  50. LPWSTR NonLocalizedEnvStr;
  51. LPWSTR NonLocalizedVerStr;
  52. DWORD Encode;
  53. };
  54. struct ArchAlias {
  55. INT ArchAliasId;
  56. INT ArchId;
  57. };
  58. struct VerAlias {
  59. INT VerAliasId;
  60. INT VerId;
  61. };
  62. TArchLV(
  63. VOID
  64. );
  65. ~TArchLV(
  66. VOID
  67. );
  68. BOOL
  69. bSetUI(
  70. HWND hwnd,
  71. WPARAM wmDblClickMsg = 0,
  72. WPARAM wmSingleClickMsg = 0
  73. );
  74. BOOL
  75. bRefreshListView(
  76. IN LPCTSTR pszServerName,
  77. IN LPCTSTR pszDriverName
  78. );
  79. BOOL
  80. bHandleNotifyMessage(
  81. IN UINT uMsg,
  82. IN WPARAM wParam,
  83. IN LPARAM lParam
  84. );
  85. UINT
  86. uGetCheckedItemCount(
  87. VOID
  88. );
  89. BOOL
  90. bGetCheckedItems(
  91. IN UINT uIndex,
  92. IN BOOL *pbInstalled,
  93. IN DWORD *pdwEncode
  94. );
  95. BOOL
  96. bSetCheckDefaultArch(
  97. IN LPCTSTR pszServerName
  98. );
  99. VOID
  100. vSelectItem(
  101. IN UINT iIndex
  102. );
  103. VOID
  104. vNoItemCheck(
  105. VOID
  106. );
  107. static
  108. BOOL
  109. bEncodeToArchAndVersion(
  110. IN DWORD dwEncode,
  111. OUT TString &strArch,
  112. OUT TString &strVersion
  113. );
  114. static
  115. BOOL
  116. bArchAndVersionToEncode(
  117. OUT DWORD *pdwEncode,
  118. IN LPCTSTR pszArchitecture,
  119. IN LPCTSTR pszVersion,
  120. IN BOOL bUseNonLocalizedStrings = FALSE
  121. );
  122. private:
  123. //
  124. // Architecture data this is a helper class need for
  125. // sorting the list view.
  126. //
  127. class TArchData {
  128. public:
  129. TArchData(
  130. IN LPCTSTR pszArchitecture,
  131. IN LPCTSTR pszVersion,
  132. IN LPCTSTR pszInstalled,
  133. IN DWORD Encode,
  134. IN BOOL bInstalled
  135. );
  136. ~TArchData(
  137. VOID
  138. );
  139. BOOL
  140. bValid(
  141. VOID
  142. );
  143. DLINK( TArchData, ArchData );
  144. TString _strArchitecture;
  145. TString _strVersion;
  146. TString _strInstalled;
  147. DWORD _Encode;
  148. DWORD _bInstalled;
  149. private:
  150. //
  151. // Copying and assignment are not defined.
  152. //
  153. TArchData(
  154. const TArchData &
  155. );
  156. TArchData &
  157. operator =(
  158. const TArchData &
  159. );
  160. };
  161. //
  162. // Copying and assignment are not defined.
  163. //
  164. TArchLV(
  165. const TArchLV &
  166. );
  167. TArchLV &
  168. operator =(
  169. const TArchLV &
  170. );
  171. BOOL
  172. bFillListView(
  173. IN LPCTSTR pszServerName,
  174. IN LPCTSTR pszDriverName
  175. );
  176. LRESULT
  177. iAddToListView(
  178. IN LPCTSTR pszArchitecture,
  179. IN LPCTSTR pszVersion,
  180. IN LPCTSTR pszInstalled,
  181. IN LPARAM lParam
  182. );
  183. VOID
  184. vRelease(
  185. VOID
  186. );
  187. BOOL
  188. bListViewSort(
  189. UINT uColumn
  190. );
  191. static
  192. INT
  193. CALLBACK
  194. iCompareProc(
  195. IN LPARAM lParam1,
  196. IN LPARAM lParam2,
  197. IN LPARAM RefData
  198. );
  199. BOOL
  200. bGetItemData(
  201. IN INT iItem,
  202. IN TArchData **ppArchData
  203. ) const;
  204. BOOL
  205. bListVeiwKeydown(
  206. IN LPARAM lParam
  207. );
  208. VOID
  209. TArchLV::
  210. vItemClicked(
  211. IN INT iItem
  212. );
  213. BOOL
  214. TArchLV::
  215. vCheckItemClicked(
  216. IN LPNMHDR pnmh
  217. );
  218. VOID
  219. vCheckItem(
  220. IN INT iItem,
  221. IN BOOL bCheckState
  222. );
  223. HWND _hwnd;
  224. HWND _hwndLV;
  225. WPARAM _wmDoubleClickMsg;
  226. WPARAM _wmSingleClickMsg;
  227. TBitArray _ColumnSortState;
  228. UINT _uCurrentColumn;
  229. BOOL _bNoItemCheck;
  230. DLINK_BASE( TArchData, ArchDataList, ArchData );
  231. };
  232. #endif