XTPTaskPanelGroup.h
上传用户:szled88
上传日期:2015-04-09
资源大小:43957k
文件大小:33k
源码类别:

对话框与窗口

开发平台:

Visual C++

  1. // XTPTaskPanelGroup.h interface for the CXTPTaskPanelGroup class.
  2. //
  3. // This file is a part of the XTREME TASKPANEL MFC class library.
  4. // (c)1998-2008 Codejock Software, All Rights Reserved.
  5. //
  6. // THIS SOURCE FILE IS THE PROPERTY OF CODEJOCK SOFTWARE AND IS NOT TO BE
  7. // RE-DISTRIBUTED BY ANY MEANS WHATSOEVER WITHOUT THE EXPRESSED WRITTEN
  8. // CONSENT OF CODEJOCK SOFTWARE.
  9. //
  10. // THIS SOURCE CODE CAN ONLY BE USED UNDER THE TERMS AND CONDITIONS OUTLINED
  11. // IN THE XTREME TOOLKIT PRO LICENSE AGREEMENT. CODEJOCK SOFTWARE GRANTS TO
  12. // YOU (ONE SOFTWARE DEVELOPER) THE LIMITED RIGHT TO USE THIS SOFTWARE ON A
  13. // SINGLE COMPUTER.
  14. //
  15. // CONTACT INFORMATION:
  16. // support@codejock.com
  17. // http://www.codejock.com
  18. //
  19. /////////////////////////////////////////////////////////////////////////////
  20. //{{AFX_CODEJOCK_PRIVATE
  21. #if !defined(__XTPTASKPANELGROUP_H__)
  22. #define __XTPTASKPANELGROUP_H__
  23. //}}AFX_CODEJOCK_PRIVATE
  24. #if _MSC_VER > 1000
  25. #pragma once
  26. #endif // _MSC_VER > 1000
  27. #include "XTPTaskPanelItem.h"
  28. class CXTPTaskPanel;
  29. class CXTPTaskPanelItems;
  30. class CXTPTaskPanelItem;
  31. class CXTPTaskPanelPaintManager;
  32. class CXTPTaskPanelGroupItem;
  33. class CXTPTaskPanelGroupItems;
  34. //===========================================================================
  35. // Summary:
  36. //     CXTPTaskPanelGroup is a CXTPTaskPanelItem derived class. It is used in TaskPanel control
  37. //     as single group.
  38. //===========================================================================
  39. class _XTP_EXT_CLASS CXTPTaskPanelGroup : public CXTPTaskPanelItem
  40. {
  41. DECLARE_SERIAL(CXTPTaskPanelGroup)
  42. public:
  43. //-------------------------------------------------------------------------
  44. // Summary:
  45. //     Constructs a CXTPTaskPanelGroup object
  46. // Parameters:
  47. //     pPanel - Parent task panel pointer.
  48. //-------------------------------------------------------------------------
  49. CXTPTaskPanelGroup(CXTPTaskPanel* pPanel = NULL);
  50. //-----------------------------------------------------------------------
  51. // Summary:
  52. //     Destroys a CXTPTaskPanelGroup object, handles cleanup and deallocation.
  53. //-----------------------------------------------------------------------
  54. virtual ~CXTPTaskPanelGroup();
  55. public:
  56. //-----------------------------------------------------------------------
  57. // Summary:
  58. //     Call this method to get collection of group items.
  59. // Returns:
  60. //     Collection of items of group
  61. //-----------------------------------------------------------------------
  62. CXTPTaskPanelItems* GetItems() const;
  63. //-----------------------------------------------------------------------
  64. // Summary:
  65. //     This method retrieves an item with the specified index.
  66. // Parameters:
  67. //     nIndex - Specifies the zero-based index of the item to retrieve.
  68. // Returns:
  69. //     A pointer to a CXTPTaskPanelGroupItem object.
  70. //-----------------------------------------------------------------------
  71. CXTPTaskPanelGroupItem* GetAt(int nIndex) const;
  72. //-----------------------------------------------------------------------
  73. // Summary:
  74. //     Call this member to find item with specified identifier.
  75. // Parameters:
  76. //     nID - Identifier of the item to be found.
  77. // Returns:
  78. //     A pointer to item if successful; otherwise returns NULL.
  79. //-----------------------------------------------------------------------
  80. CXTPTaskPanelGroupItem* FindItem(int nID) const;
  81. //-----------------------------------------------------------------------
  82. // Summary:
  83. //     Call this method to add a new link item to group.
  84. // Parameters:
  85. //     nID - Identifier of item to be added.
  86. //     nImage - Image index in TaskPanel image list.
  87. // Returns:
  88. //     A pointer to the created CXTPTaskPanelGroupItem class
  89. //-----------------------------------------------------------------------
  90. CXTPTaskPanelGroupItem* AddLinkItem(UINT nID, int nImage = -1);
  91. //-----------------------------------------------------------------------
  92. // Summary:
  93. //     Call this method to add a new text item to group.
  94. // Parameters:
  95. //     strText - Items text
  96. // Returns:
  97. //     A pointer to created CXTPTaskPanelGroupItem class
  98. //-----------------------------------------------------------------------
  99. CXTPTaskPanelGroupItem* AddTextItem(LPCTSTR strText);
  100. //-----------------------------------------------------------------------
  101. // Summary:
  102. //     Call this method to add a new control item to group.
  103. // Parameters:
  104. //     hWnd - Window Handle
  105. // Returns:
  106. //     A pointer to created CXTPTaskPanelGroupItem class
  107. //-----------------------------------------------------------------------
  108. CXTPTaskPanelGroupItem* AddControlItem(HWND hWnd);
  109. //-----------------------------------------------------------------------
  110. // Summary:
  111. //     This method determines where a point lies in a specified item.
  112. // Parameters:
  113. //     pt     - Specifies the point to be tested.
  114. //     lpRect - Retrieves bounding rectangle of the item. Can be NULL if you don't need it.
  115. // Returns:
  116. //     A pointer to a CXTPTaskPanelGroupItem item that occupies the specified point or NULL if
  117. //     no item occupies the point.
  118. //-----------------------------------------------------------------------
  119. CXTPTaskPanelGroupItem* HitTest(CPoint pt, CRect* lpRect = 0) const;
  120. //-----------------------------------------------------------------------
  121. // Summary:
  122. //     This method is called when a group is repositioned.
  123. // Parameters:
  124. //     rc - new group's position.
  125. //     bRecalcOnly - TRUE to recalculate only.
  126. // Returns:
  127. //     Target location of group (m_rcGroupTarget).
  128. // Remarks:
  129. //     During animation the groups need to be repositioned.  This method
  130. //     will return the target location of the group.
  131. // Remarks:
  132. //     CXTPTaskPanel::AnimateGroups, CXTPTaskPanel::SetAnimation,
  133. //     CXTPTaskPanel::GetAnimation, IsDirty, OnAnimate
  134. //-----------------------------------------------------------------------
  135. CRect OnReposition(CRect rc, BOOL bRecalcOnly = TRUE);
  136. //-----------------------------------------------------------------------
  137. // Summary:
  138. //     This method is called when an animation step is executed.
  139. // Parameters:
  140. //     nStep - Step of animation.
  141. // Remarks:
  142. //     CXTPTaskPanel::AnimateGroups, CXTPTaskPanel::SetAnimation,
  143. //     CXTPTaskPanel::GetAnimation, IsDirty, OnReposition
  144. //-----------------------------------------------------------------------
  145. void OnAnimate(int nStep);
  146. //-----------------------------------------------------------------------
  147. // Summary:
  148. //     This method is called to draw a group.
  149. // Parameters:
  150. //     pDC - Points to the client device context.
  151. // Remarks:
  152. //     OnPaint calls CXTPTaskPanelPaintManager::DrawGroupCaption and
  153. //     CXTPTaskPanelPaintManager::DrawGroupClient.
  154. //-----------------------------------------------------------------------
  155. void OnPaint(CDC* pDC);
  156. //-----------------------------------------------------------------------
  157. // Summary:
  158. //     Call this method to get the rectangle of the caption.
  159. // Returns:
  160. //     Caption rectangle.
  161. //-----------------------------------------------------------------------
  162. CRect GetCaptionRect() const;
  163. //-----------------------------------------------------------------------
  164. // Summary:
  165. //     Call this method to get the current rectangle of the client.
  166. // Returns:
  167. //     Client rectangle.
  168. //-----------------------------------------------------------------------
  169. CRect GetClientRect() const;
  170. //-----------------------------------------------------------------------
  171. // Summary:
  172. //     Call this method to get the target rectangle of the client.
  173. // Returns:
  174. //     Target client rectangle
  175. //-----------------------------------------------------------------------
  176. CRect GetTargetClientRect() const;
  177. //-----------------------------------------------------------------------
  178. // Summary:
  179. //     Call this method to get the target rectangle of caption.
  180. // Returns:
  181. //     Target caption rectangle
  182. //-----------------------------------------------------------------------
  183. CRect GetTargetCaptionRect() const;
  184. //-----------------------------------------------------------------------
  185. // Summary:
  186. //     Call this method to make the group special.
  187. // Parameters:
  188. //     bSpecial - TRUE if group is special.
  189. // Remarks:
  190. //     If a group is special, it will appear in a different color than the
  191. //     other groups.  Groups marked as special will be displayed differently
  192. //     than normal groups drawing the users attention to that particular
  193. //     group.  This is an excellent way to show the user the "default" or
  194. //     important items.
  195. //-----------------------------------------------------------------------
  196. void SetSpecialGroup(BOOL bSpecial = TRUE);
  197. //-----------------------------------------------------------------------
  198. // Summary:
  199. //     Call this function to determine if the group is special.  A
  200. //     If a group is special, it will appear in a different color than
  201. //     the other groups.  Groups marked as special will be displayed
  202. //     differently than normal groups drawing the users attention to
  203. //     that particular group.  This is an excellent way to show the
  204. //     user the "default" or important items
  205. // Returns:
  206. //     TRUE is the groups is special, FALSE otherwise.
  207. //-----------------------------------------------------------------------
  208. BOOL IsSpecialGroup() const;
  209. //-----------------------------------------------------------------------
  210. // Summary:
  211. //     Call this method to set expandable state of group.
  212. // Parameters:
  213. //     bExpandable - TRUE if group is expandable.
  214. //-----------------------------------------------------------------------
  215. void SetExpandable(BOOL bExpandable);
  216. //-----------------------------------------------------------------------
  217. // Summary:
  218. //     Call this method to determine if group is expandable.
  219. // Returns:
  220. //     TRUE is the groups is expandable, FALSE if it can't be expanded.
  221. //-----------------------------------------------------------------------
  222. BOOL IsExpandable() const;
  223. //-----------------------------------------------------------------------
  224. // Summary:
  225. //     Call this method to show or hide group's caption.
  226. // Parameters:
  227. //     bShow - TRUE to show caption; otherwise FALSE.
  228. //-----------------------------------------------------------------------
  229. void ShowCaption(BOOL bShow);
  230. //-----------------------------------------------------------------------
  231. // Summary:
  232. //     Retrieves if caption is visible.
  233. // Returns:
  234. //     TRUE if caption is visible, FALSE if caption is hidden.
  235. // See Also: ShowCaption
  236. //-----------------------------------------------------------------------
  237. BOOL IsCaptionVisible() const;
  238. //-----------------------------------------------------------------------
  239. // Summary:
  240. //     Call this member to determine if the group is currently expanded.
  241. // Returns:
  242. //     TRUE if the group is expanded, FALSE if the group is collapsed.
  243. // See Also:
  244. //     SetExpanded, CXTPTaskPanel::AnimateGroups, CXTPTaskPanel::SetAnimation,
  245. //     CXTPTaskPanel::GetAnimation, IsDirty, IsExpanding
  246. //-----------------------------------------------------------------------
  247. BOOL IsExpanded() const;
  248. //-----------------------------------------------------------------------
  249. // Summary:
  250. //     Call this member to determine if a group is currently expanding.
  251. // Returns:
  252. //     TRUE is group is currently in the process of expanding, FALSE otherwise.
  253. // See Also:
  254. //     SetExpanded, CXTPTaskPanel::AnimateGroups, CXTPTaskPanel::SetAnimation,
  255. //     CXTPTaskPanel::GetAnimation, IsDirty, IsExpanded
  256. //-----------------------------------------------------------------------
  257. BOOL IsExpanding() const;
  258. //-----------------------------------------------------------------------
  259. // Summary:
  260. //     Call this function to get the height of expanded group.
  261. // Returns:
  262. //     Client height of expanded group.
  263. //-----------------------------------------------------------------------
  264. int GetExpandedClientHeight() const;
  265. //-----------------------------------------------------------------------
  266. // Summary:
  267. //     Call this method to expand or collapse the group.
  268. // Parameters:
  269. //     bExpanded - TRUE to expand group; otherwise FALSE.
  270. // See Also:
  271. //     CXTPTaskPanel::AnimateGroups, CXTPTaskPanel::SetAnimation,
  272. //     CXTPTaskPanel::GetAnimation, IsDirty, IsExpanding, IsExpanded
  273. //-----------------------------------------------------------------------
  274. void SetExpanded(BOOL bExpanded);
  275. //-----------------------------------------------------------------------
  276. // Summary:
  277. //     This member is called to determine if the current group position
  278. //     is "dirty" i.e. Moving during animation.
  279. // Returns:
  280. //     TRUE if current position of group is dirty.
  281. // Remarks:
  282. //     During animation, the group moves from it's oldcurrent position to the newtarget
  283. //     position.  IsDirty indicates that the animation has not finished yet
  284. //     and its current position is <> to the target position.  The oldcurrent position
  285. //     is stored in m_rcGroupCurrent, and the newtarget position is stored in
  286. //     m_rcGroupTarget.
  287. //
  288. //     Animation occurs when the task panel first becomes visible and when
  289. //     the expandcollapse button is clicked in the group caption.
  290. // See Also:
  291. //     CXTPTaskPanel::AnimateGroups, CXTPTaskPanel::SetAnimation,
  292. //     CXTPTaskPanel::GetAnimation, OnAnimate, m_rcGroupTarget, m_rcGroupCurrent
  293. //-----------------------------------------------------------------------
  294. BOOL IsDirty() const;
  295. //-----------------------------------------------------------------------
  296. // Summary:
  297. //     Retrieves outer margins of group
  298. // Returns:
  299. //     Outer margins
  300. //-----------------------------------------------------------------------
  301. CRect& GetOuterMargins();
  302. //-----------------------------------------------------------------------
  303. // Summary:
  304. //     Retrieves inner margins of group
  305. // Returns:
  306. //     Inner margins
  307. //-----------------------------------------------------------------------
  308. CRect& GetInnerMargins();
  309. //-----------------------------------------------------------------------
  310. // Summary:
  311. //     Retrieves minimum client height for individual group
  312. // Returns:
  313. //     Minimum client height
  314. //-----------------------------------------------------------------------
  315. int GetMinimumClientHeight() const;
  316. //-----------------------------------------------------------------------
  317. // Summary:
  318. //     Call this method to set minimum client height for individual group
  319. // Parameters:
  320. //     nMinClientHeight - Minimum client height
  321. //-----------------------------------------------------------------------
  322. void SetMinimumClientHeight(int nMinClientHeight);
  323. //-----------------------------------------------------------------------
  324. // Summary:
  325. //     Call this member to determine if the group can accept focus.
  326. // Returns:
  327. //     TRUE if the group can receive focus, FALSE if the group
  328. //     cannot receive focus.
  329. //-----------------------------------------------------------------------
  330. BOOL IsAcceptFocus() const;
  331. //-----------------------------------------------------------------------
  332. // Summary:
  333. //     Call this member to draw a bitmap in the lower right corner of a
  334. //     task panel group.
  335. // Parameters:
  336. //     nID            - Bitmap resource identifier.
  337. //     clrTransparent - Color in bitmap to make transparent when bAlpha is
  338. //                      FALSE.
  339. //     bAlpha         - TRUE to use alpha transparency and load a
  340. //                      32-bit bitmap.  FALSE to load a 24-bit bitmap and
  341. //                      use the color stored in clrTransparent as the
  342. //                      transparent color.
  343. // Remarks:
  344. //     The bitmap will always be in the lower right corner of the group,
  345. //     and will not move.
  346. //     The bitmap is drawn on the group in the OnFillClient method.
  347. // See Also:
  348. //     OnFillClient, m_szClientBitmap
  349. //-----------------------------------------------------------------------
  350. void SetClientBitmap(UINT nID, COLORREF clrTransparent, BOOL bAlpha = FALSE);
  351. //-----------------------------------------------------------------------
  352. // Summary:
  353. //     This method is called when the task panel group client area is
  354. //     drawn.
  355. // Parameters:
  356. //     pDC - Pointer to a valid device context.
  357. //     rc  - CRect object specifying size of area.
  358. // Remarks:
  359. //     This method is called from CXTPTaskPanelPaintManager::DrawGroupClientFace
  360. //     when the group client face needs filled.
  361. //
  362. //     This method checks to see if a bitmap should be drawn in the lower
  363. //     right corner of the task panel group.  Then it will drawn the bitmap
  364. //     if a bitmap was added.  A bitmap can be added with the SetClientBitmap
  365. //     method.
  366. // See Also:
  367. //     SetClientBitmap
  368. //-----------------------------------------------------------------------
  369. virtual void OnFillClient(CDC* pDC, CRect rc);
  370. //-----------------------------------------------------------------------
  371. // Summary:
  372. //     Call this member to determine the item layout currently used for this group.
  373. // Returns:
  374. //     The currently set XTPTaskPanelItemLayout for this group.
  375. //-----------------------------------------------------------------------
  376. XTPTaskPanelItemLayout GetItemLayout() const;
  377. //-----------------------------------------------------------------------
  378. // Summary:
  379. //     Call this member to specify the item layout of the XTPTaskPanelItems in
  380. //     this group.  Layouts include text only, image only, image and text, and
  381. //     image with text below the image.  This will apply to this group only.
  382. // Parameters:
  383. //     itemLayout - The desired XTPTaskPanelItemLayout for this group.
  384. //-----------------------------------------------------------------------
  385. void SetItemLayout(XTPTaskPanelItemLayout itemLayout);
  386. //-----------------------------------------------------------------------
  387. // Summary:
  388. //     Call this member to select a task panel group item.  Multiple items can have
  389. //     focus if CXTPTaskPanel::m_bSelectItemOnFocus is FALSE.
  390. // Parameters:
  391. //     pItem - Pointer to a task panel group item.
  392. // Remarks:
  393. //     Selected items will appear "pressed" or highlighted depending on
  394. //     the selected theme.  Selected items will have
  395. //     XTPTaskPanelGroupItem::m_bSelected as TRUE.
  396. // See Also: XTPTaskPanelGroupItem::IsItemSelected, XTPTaskPanelGroupItem::SetItemSelected
  397. //-----------------------------------------------------------------------
  398. void SetSelectedItem(CXTPTaskPanelGroupItem* pItem);
  399. //-----------------------------------------------------------------------
  400. // Summary:
  401. //     This member is called to check to see if the item currently being
  402. //     dragged over the group belongs to the group.
  403. // Returns:
  404. //     TRUE if the item belongs to the group, FALSE otherwise.
  405. // Remarks:
  406. //     This checks to see if CSTPTaskPanel::m_pItemDragOver belongs to the group.
  407. //     This is used in the PaintManager to determine if an inverted rectangle
  408. //     must be drawn for the item.  An inverted rectangle is only drawn when
  409. //     the XTPTaskPanelPaintTheme is set to xtpTaskPanelThemeToolbox.
  410. // See Also:
  411. //     XTPTaskPanelPaintTheme, CXTPTaskPanelToolboxTheme::DrawGroupCaption
  412. //-----------------------------------------------------------------------
  413. BOOL IsChildItemDragOver() const;
  414. //-----------------------------------------------------------------------
  415. // Summary:
  416. //     Call this member to determine the number of items that are in this group.
  417. // Returns:
  418. //     Number of items in this group.
  419. //-----------------------------------------------------------------------
  420. int GetItemCount() const;
  421. //-----------------------------------------------------------------------
  422. // Summary:
  423. //     Call this member to determine if a group scroll button is enabled.
  424. // Parameters:
  425. //     bScrollButtonUp - If TRUE, check to see if the "scroll up" button
  426. //                       is enabled, If FALSE, check to see if the
  427. //                       "scroll down" button is enabled.
  428. // Returns:
  429. //     TRUE is the group scroll button is enabled, FALSE if the buttons
  430. //     is disabled.
  431. // Remarks:
  432. //     CXTPTaskPanel::UpdateScrollButtons uses this method to update the
  433. //     state of the scroll buttons.
  434. //-----------------------------------------------------------------------
  435. BOOL IsScrollButtonEnabled(BOOL bScrollButtonUp) const;
  436. //-----------------------------------------------------------------------
  437. // Summary:
  438. //     This member is called to get the scroll offset of the first visible
  439. //     item in the group in pixels.
  440. // Returns:
  441. //     Scroll offset of first visible item in group in pixels.
  442. // Remarks:
  443. //     GetScrollOffsetPos returns the height in pixels that has been
  444. //     scrolled.  GetOffsetItem gets the index of the first visible item.
  445. // See Also:
  446. //     Scroll, GetOffsetItem, GetItemCount, GetItemsInRow
  447. //-----------------------------------------------------------------------
  448. int GetScrollOffsetPos() const;
  449. //-----------------------------------------------------------------------
  450. // Summary:
  451. //     This method is called to set index of the first visible
  452. //     item in the group
  453. // Parameters:
  454. //     nScrollOffset - First visible item in the group to be set
  455. //     bUpdateScrollButtons - TRUE to refresh scroll buttons  state.
  456. //-----------------------------------------------------------------------
  457. void SetOffsetItem(int nScrollOffset, BOOL bUpdateScrollButtons = TRUE);
  458. //-----------------------------------------------------------------------
  459. // Summary:
  460. //     This method is called to determine if item is visible in the group
  461. // Parameters:
  462. //     pItem      - Item to test
  463. //     bAllowPart - TRUE to allow partially visible item.
  464. // Returns: TRUE if item is visible; FALSE otherwise.
  465. //-----------------------------------------------------------------------
  466. BOOL IsItemVisible(CXTPTaskPanelGroupItem* pItem, BOOL bAllowPart) const;
  467. //-----------------------------------------------------------------------
  468. // Summary:
  469. //     Call this member to get the index of the first visible item in group.
  470. // Returns:
  471. //     Index of first visible item in group.
  472. // Remarks:
  473. //     This will return the index of the first visible item in the group,
  474. //     this is helpful when the items in the group are scrolled.
  475. // See Also:
  476. //     GetScrollOffsetPos, Scroll, GetItemCount, GetItemsInRow
  477. //-----------------------------------------------------------------------
  478. int GetOffsetItem() const;
  479. //-----------------------------------------------------------------------
  480. // Summary:
  481. //     Call this member to scroll to an item in the task panel group. When
  482. //     the group has scroll buttons.
  483. // Parameters:
  484. //     nDelta - Offset of item to scroll to.  GetItemCount and
  485. //              GetOffsetItem can be used to determine which
  486. //              item you need to scroll to.
  487. // Remarks:
  488. //     The scroll offset starts at zero.  The offset will remain at
  489. //     zero until the group's view is too small to display all
  490. //     of items.  If the group is scrolled, the offset will increment
  491. //     by 1 for each item that is scrolled from the top.  For example,
  492. //     If the top top items in the group are not visible, then the
  493. //     scroll offset is 4 (zero based index).
  494. //
  495. //     GetItemCount and GetOffsetItem can be used to determine which
  496. //     item to scroll to.  Setting nDelta to 0 will scroll to the top
  497. //     of the group.
  498. //
  499. //     Note:  If there are more than 1 item in a row like when the XTPTaskPanelItemLayout
  500. //            is set to xtpTaskItemLayoutImages, then the offset will
  501. //            increment by GetItemsInRow.
  502. // See Also:
  503. //     GetScrollOffsetPos, GetOffsetItem, GetItemCount, GetItemsInRow
  504. //-----------------------------------------------------------------------
  505. void Scroll(int nDelta);
  506. //-----------------------------------------------------------------------
  507. // Summary:
  508. //     Call this member to make sure that an item is visible in the task panel.
  509. //     This will scroll the task panel and group that the item is in
  510. //     until the item is visible.
  511. // Parameters:
  512. //     pItem - Item that should be visible.
  513. //     bUpdateScrollButtons - TRUE to update the scroll buttons, if needed,
  514. //                             to reflect the position of the group.
  515. //-----------------------------------------------------------------------
  516. void EnsureVisible(CXTPTaskPanelGroupItem* pItem, BOOL bUpdateScrollButtons = TRUE);
  517. //-----------------------------------------------------------------------
  518. // Summary:
  519. //     Call this member to get the number of group items per row in the
  520. //     task panel group.
  521. // Returns:
  522. //     The number of group items per row in the group.
  523. // See Also:
  524. //     If the task panel behavior is set to xtpTaskPanelBehaviourExplorer or
  525. //     xtpTaskPanelBehaviourList, then the number of items per row is
  526. //     always 1.  If the behavior is set to xtpTaskPanelBehaviourToolbox, then
  527. //     there can be multiple items per row.
  528. //
  529. //     If the behavior is set to to xtpTaskPanelBehaviourExplorer or
  530. //     xtpTaskPanelBehaviourList, then the layout must be set to
  531. //     xtpTaskItemLayoutImages for multiple items on a row.
  532. // See Also:
  533. //     XTPTaskPanelBehaviour, XTPTaskPanelItemLayout, Scroll
  534. //-----------------------------------------------------------------------
  535. int GetItemsInRow() const;
  536. //-----------------------------------------------------------------------
  537. // Summary:
  538. //     Reads or writes this object from or to an archive.
  539. // Parameters:
  540. //     pPX - A CXTPPropExchange object to serialize to or from.
  541. //----------------------------------------------------------------------
  542. virtual void DoPropExchange(CXTPPropExchange* pPX);
  543. //-----------------------------------------------------------------------
  544. // Summary:
  545. //     Call this member to retrieve the rectangle of the "tooltip zone"
  546. //     while the mouse is positioned over the group caption.
  547. // Returns:
  548. //     The rectangle of the "tooltip zone" while the mouse is positioned
  549. //     over the group caption.
  550. // Remarks:
  551. //     The "tooltip zone" is the area that a tooltip will be displayed
  552. //     while the mouse is positioned over the group caption.
  553. // See Also:
  554. //     CXTPTaskPanelGroupItem::GetHitTestRect
  555. //-----------------------------------------------------------------------
  556. virtual CRect GetHitTestRect() const;
  557. //-----------------------------------------------------------------------
  558. // Summary:
  559. //     Call this member to retrieve the rectangle of the "drawing zone"
  560. // See Also:
  561. //     CXTPTaskPanelGroupItem::GetHitTestRect
  562. //-----------------------------------------------------------------------
  563. virtual CRect GetInvalidateRect() const;
  564. //-----------------------------------------------------------------------
  565. // Summary:
  566. //     Call this member to get the height of the group caption.
  567. // Returns:
  568. //     Height of group caption.
  569. //-----------------------------------------------------------------------
  570. int GetCaptionHeight() const;
  571. //-----------------------------------------------------------------------
  572. // Summary:
  573. //     Call this member too get the size used to draw group item icons.
  574. // Returns:
  575. //     Currently set group item icon size.
  576. // See Also:
  577. //     SetItemIconSize
  578. //-----------------------------------------------------------------------
  579. CSize GetItemIconSize() const;
  580. //-----------------------------------------------------------------------
  581. // Summary:
  582. //     Call this member to set the icon size of the group items.
  583. // Parameters:
  584. //     szItemIcon - Item icon size.
  585. // See Also:
  586. //     GetItemIconSize
  587. //-----------------------------------------------------------------------
  588. void SetIconSize(CSize szItemIcon);
  589. //-----------------------------------------------------------------------
  590. // Summary:
  591. //     This method finds next visible item in specified direction.
  592. // Parameters:
  593. //     nIndex     - Index of the item to begin the searching with
  594. //     nDirection - Direction to find (1 to forward, -1 to backward)
  595. // Returns:
  596. //     Next visible item; or NULL if not found.
  597. //-----------------------------------------------------------------------
  598. CXTPTaskPanelGroupItem* GetNextVisibleItem(int nIndex, int nDirection = +1) const;
  599. protected:
  600. //-----------------------------------------------------------------------
  601. // Summary:
  602. //     This method is called to determine the area that can be used to draw
  603. //     the Active group if the behavior is not xtpTaskPanelBehaviourExplorer.
  604. // Returns:
  605. //     Height in pixels after group caption or available area.
  606. // See Also:
  607. //     OnCalcClientHeight
  608. //-----------------------------------------------------------------------
  609. int CalcInsideHeight();
  610. //-----------------------------------------------------------------------
  611. // Summary:
  612. //     This method is called to calculate the group client area needed to
  613. //     display all items.
  614. // Parameters:
  615. //     pDC    - Pointer to a valid device context.
  616. //     rc - Bounding rectangle of the task panel group.
  617. // See Also:
  618. //     CalcInsideHeight
  619. //-----------------------------------------------------------------------
  620. virtual void OnCalcClientHeight(CDC* pDC, CRect rc);
  621. //-----------------------------------------------------------------------
  622. // Summary:
  623. //     This method is called when group was removed from parent groups collection
  624. //-----------------------------------------------------------------------
  625. void OnRemoved();
  626. protected:
  627. //{{AFX_CODEJOCK_PRIVATE
  628. // System accessibility Support
  629. virtual HRESULT GetAccessibleState(VARIANT varChild, VARIANT* pvarState);
  630. virtual HRESULT GetAccessibleDefaultAction(VARIANT varChild, BSTR* pszDefaultAction);
  631. virtual HRESULT AccessibleDoDefaultAction(VARIANT varChild);
  632. //}}AFX_CODEJOCK_PRIVATE
  633. private:
  634. void RepositionAutoHeightControls(int nHeightOffset);
  635. void RepositionScrollOffset();
  636. protected:
  637. CRect m_rcGroupTarget;              // Target rectangle of group during animation.
  638. CRect m_rcGroupCurrent;             // Current rectangle of group during animation.
  639. CRect m_rcMarginsOuter;             // Outer margins.
  640. CRect m_rcMarginsInner;             // Inner margins.
  641. int m_nCaptionHeight;               // Height of caption.
  642. BOOL m_bSpecial;                    // TRUE if group is special.
  643. BOOL m_bExpandable;                 // TRUE if group is expandable.
  644. BOOL m_bExpanded;                   // TRUE if group is expanded.
  645. BOOL m_bExpanding;                  // TRUE if group is expanding now.
  646. int m_nExpandedClientHeight;        // Expanded client height.
  647. int m_nMinClientHeight;             // Minimum client height.
  648. BOOL m_bCaptionVisible;             // TRUE if caption is visible.
  649. CImageList m_ilClient;              // ImageList that holds the image to be displayed int he lower right corner of the group.
  650. CSize m_szClientBitmap;             // Image to be displayed in the lower right corner of the group.
  651. int m_nScrollOffset;                // Scroll offset of group.  Only applies if the task panel behavior is set to xtpTaskPanelBehaviourList or xtpTaskPanelBehaviourToolbox.
  652. int m_nItemsInRow;                  // Number of group items in a row when using the xtpTaskPanelBehaviourToolbox XTPTaskPanelBehaviour. For all other behaviors it will only be 1 unless the layout is set to to xtpTaskPanelBehaviourExplorer or xtpTaskPanelBehaviourList.
  653. CSize m_szItemIcon;                 // Size of group item icons.
  654. CXTPTaskPanelGroupItems* m_pItems;  // Collection of items.
  655. XTPTaskPanelItemLayout m_itemLayout;// Currently set layout for the group.
  656. private:
  657. friend class CXTPTaskPanel;
  658. };
  659. AFX_INLINE CXTPTaskPanelItems* CXTPTaskPanelGroup::GetItems() const {
  660. ASSERT(m_pItems);
  661. return (CXTPTaskPanelItems*)m_pItems;
  662. }
  663. AFX_INLINE int CXTPTaskPanelGroup::GetExpandedClientHeight() const {
  664. return m_nExpandedClientHeight;
  665. }
  666. AFX_INLINE CRect& CXTPTaskPanelGroup::GetOuterMargins() {
  667. return m_rcMarginsOuter;
  668. }
  669. AFX_INLINE CRect& CXTPTaskPanelGroup::GetInnerMargins() {
  670. return m_rcMarginsInner;
  671. }
  672. AFX_INLINE int CXTPTaskPanelGroup::GetItemsInRow() const {
  673. return m_nItemsInRow;
  674. }
  675. AFX_INLINE int CXTPTaskPanelGroup::GetCaptionHeight() const {
  676. return m_nCaptionHeight;
  677. }
  678. #endif // !defined(__XTPTASKPANELGROUP_H__)