You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

328 lines
13 KiB
C

2 years ago
// XTPTaskPanelGroupItem.h interface for the CXTPTaskPanelGroupItem class.
//
// This file is a part of the XTREME TASKPANEL MFC class library.
// (c)1998-2012 Codejock Software, All Rights Reserved.
//
// THIS SOURCE FILE IS THE PROPERTY OF CODEJOCK SOFTWARE AND IS NOT TO BE
// RE-DISTRIBUTED BY ANY MEANS WHATSOEVER WITHOUT THE EXPRESSED WRITTEN
// CONSENT OF CODEJOCK SOFTWARE.
//
// THIS SOURCE CODE CAN ONLY BE USED UNDER THE TERMS AND CONDITIONS OUTLINED
// IN THE XTREME TOOLKIT PRO LICENSE AGREEMENT. CODEJOCK SOFTWARE GRANTS TO
// YOU (ONE SOFTWARE DEVELOPER) THE LIMITED RIGHT TO USE THIS SOFTWARE ON A
// SINGLE COMPUTER.
//
// CONTACT INFORMATION:
// support@codejock.com
// http://www.codejock.com
//
/////////////////////////////////////////////////////////////////////////////
//{{AFX_CODEJOCK_PRIVATE
#if !defined(__XTPTASKPANELGROUPITEM_H__)
#define __XTPTASKPANELGROUPITEM_H__
//}}AFX_CODEJOCK_PRIVATE
#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000
//===========================================================================
// Summary:
// CXTPTaskPanelGroupItem is a CXTPTaskPanelItem derived class. It is used in TaskPanel control
// as single item of the group.
//===========================================================================
class _XTP_EXT_CLASS CXTPTaskPanelGroupItem : public CXTPTaskPanelItem
{
DECLARE_SERIAL(CXTPTaskPanelGroupItem)
public:
//-------------------------------------------------------------------------
// Summary:
// Constructs a CXTPTaskPanelGroupItem object
//-------------------------------------------------------------------------
CXTPTaskPanelGroupItem();
//-----------------------------------------------------------------------
// Summary:
// Destroys a CXTPTaskPanelGroupItem object, handles cleanup and deallocation.
//-----------------------------------------------------------------------
virtual ~CXTPTaskPanelGroupItem();
public:
//-----------------------------------------------------------------------
// Summary:
// This method is called when item must be repositioned.
// Parameters:
// rc - New rectangle of the item.
//-----------------------------------------------------------------------
virtual CRect OnReposition(CRect rc);
//-----------------------------------------------------------------------
// Summary:
// This method is called to draw item in specified rectangle.
// Parameters:
// pDC - Pointer to a valid device context
// rc - Rectangle of item to draw.
//-----------------------------------------------------------------------
virtual void OnDrawItem(CDC* pDC, CRect rc);
//-----------------------------------------------------------------------
// Summary:
// Call this method to retrieve the margins of the item.
// Returns:
// The margins of the item.
//-----------------------------------------------------------------------
CRect& GetMargins();
//-----------------------------------------------------------------------
// Summary:
// Retrieves rectangle of the item.
// Returns:
// Rectangle of the item.
//-----------------------------------------------------------------------
CRect GetItemRect() const;
//-----------------------------------------------------------------------
// Summary:
// This method is called to set the bounding rectangle for the
// CXTPTaskPanelGroupItem.
// Parameters:
// lpRect - Rectangle of the item.
//-----------------------------------------------------------------------
void SetItemRect(LPCRECT lpRect);
//-----------------------------------------------------------------------
// Summary:
// Retrieves the parent group of the item.
// Returns:
// Parent group of the item.
//-----------------------------------------------------------------------
CXTPTaskPanelGroup* GetItemGroup() const;
//-----------------------------------------------------------------------
// Summary:
// Call this method to set bold font for the item to be used.
// Parameters:
// bBold - TRUE to use bold font.
//-----------------------------------------------------------------------
void SetBold(BOOL bBold = TRUE);
//-----------------------------------------------------------------------
// Summary:
// Call this member to retrieve if the font is bold.
// Returns:
// TRUE is the font is bold, FALSE otherwise.
//-----------------------------------------------------------------------
BOOL IsBold() const;
//-----------------------------------------------------------------------
// Summary:
// This method attaches control handle to item.
// Parameters:
// hWnd - Window handle to attach.
//-----------------------------------------------------------------------
void SetControlHandle(HWND hWnd);
//-----------------------------------------------------------------------
// Summary: Returns control handle attached to item.
// Returns: Window handle associated with item
//-----------------------------------------------------------------------
HWND GetControlHandle() const;
//-----------------------------------------------------------------------
// Summary:
// This method is called when an animation step is executed.
// Parameters:
// nStep - Step of animation.
//-----------------------------------------------------------------------
void OnAnimate(int nStep);
//-----------------------------------------------------------------------
// Summary:
// Call this method to set the size of the item.
// Parameters:
// szItem - Item size.
// bAutoHeight - TRUE to stretch control in group.
// See Also: GetSize
//-----------------------------------------------------------------------
void SetSize(CSize szItem, BOOL bAutoHeight = FALSE);
//-----------------------------------------------------------------------
// Summary:
// Call this member to retrieve the backcolor of this item.
// Returns:
// Backcolor of this item.
//-----------------------------------------------------------------------
COLORREF GetBackColor() const;
//-----------------------------------------------------------------------
// Summary:
// Call this member to get individual color for task panel item
//-----------------------------------------------------------------------
COLORREF GetTextColor() const;
// ----------------------------------------------------------------
// Summary:
// Call this member to set individual color for task panel item
// Parameters:
// clrText - New text color to set
// ----------------------------------------------------------------
void SetTextColor(COLORREF clrText);
//-----------------------------------------------------------------------
// Summary:
// Call this member to retrieve the rectangle of the "tooltip zone"
// while the mouse is positioned over the group item.
// Returns:
// The rectangle of the "tooltip zone" while the mouse is positioned
// over the group item.
// Remarks:
// The "tooltip zone" is the area that a tooltip will be displayed
// while the mouse is positioned over the group item.
// See Also:
// CXTPTaskPanelGroup::GetHitTestRect
//-----------------------------------------------------------------------
CRect GetHitTestRect() const;
//-----------------------------------------------------------------------
// Summary:
// Call this member to determine if the item is currently selected.
// Note that multiple items can be selected at one time, but only one
// can have focus.
// Returns:
// TRUE if the item is currently selected.
//-----------------------------------------------------------------------
BOOL IsItemSelected() const;
//-----------------------------------------------------------------------
// Summary:
// Call this member to select this item. Multiple items can have
// focus if CXTPTaskPanel::m_bSelectItemOnFocus is FALSE.
// Parameters:
// bSelected - TRUE if the item will be selected, FALSE to no longer
// select the item.
//-----------------------------------------------------------------------
void SetItemSelected(BOOL bSelected);
//-----------------------------------------------------------------------
// Summary:
// Reads or writes this object from or to an archive.
// Parameters:
// pPX - A CXTPPropExchange object to serialize to or from.
//----------------------------------------------------------------------
virtual void DoPropExchange(CXTPPropExchange* pPX);
//-----------------------------------------------------------------------
// Summary:
// Call this method to set text representing item dragged out of control.
// Parameters:
// lpszDragText - Dragged text of the item.
//----------------------------------------------------------------------
void SetDragText(LPCTSTR lpszDragText);
//-----------------------------------------------------------------------
// Summary:
// Call this method to get text representing item dragged out of control.
// Returns:
// Text will be dragged out.
// Remarks:
// You can override it to create dynamic text.
//----------------------------------------------------------------------
virtual CString GetDragText() const;
//-----------------------------------------------------------------------
// Summary:
// This member is called to cache a COleDataSource object that
// contains the group item being dragged.
// Parameters:
// srcItem - COleDataSource object to cache.
// bCacheTextData - TRUE to cache text presentation of object.
// Returns:
// TRUE if successful, FALSE if CacheGlobalData returns NULL.
// Remarks:
// This places the item being dragged onto the clipboard.
// See Also:
// CreateFromOleData, CacheGlobalData, CopyToClipboard,
// PasteFromClipboard, PrepareDrag
//-----------------------------------------------------------------------
BOOL PrepareDrag (COleDataSource& srcItem, BOOL bCacheTextData = TRUE);
//-----------------------------------------------------------------------
// Summary:
// Retrieves size of the item
// Returns:
// Size of the item.
// See Also: SetSize
//-----------------------------------------------------------------------
CSize GetSize() const;
//-----------------------------------------------------------------------
// Summary:
// Determines if the item is stretched inside its group.
// Returns:
// TRUE if item fill whole group height; FALSE if it has defined height.
//-----------------------------------------------------------------------
BOOL IsAutoHeight() const;
protected:
//{{AFX_CODEJOCK_PRIVATE
// System accessibility Support
virtual HRESULT GetAccessibleDefaultAction(VARIANT varChild, BSTR* pszDefaultAction);
virtual HRESULT AccessibleDoDefaultAction(VARIANT varChild);
virtual HRESULT GetAccessibleState(VARIANT varChild, VARIANT* pvarState);
virtual HRESULT AccessibleSelect(long flagsSelect, VARIANT varChild);
//}}AFX_CODEJOCK_PRIVATE
private:
void GetPreviewBitmap(CWnd* pWnd, CBitmap& bmp);
protected:
CRect m_rcMargins; // Item's margins.
CRect m_rcItem; // Rectangle of the item.
BOOL m_bBold; // TRUE to use bold font.
BOOL m_bSelected; // TRUE if the item is currently selected.
HWND m_hWnd; // Only used for items of type xtpTaskItemTypeControl, this is the control's child window
CSize m_szItem; // Size of item. If size is set to 0, the size will be calculated by the task panel.
CBitmap m_bmpPreview; // Internally used. This holds a screen shot of the attached Windows control when the item type is xtpTaskItemTypeControl.
// This screen shot is used during group animation. During animation, the Windows control is hidden and the screen shot of
// the control is used in place of the actual control during the animation process.
CSize m_szPreview; // Last preview bitmap size
CString m_strDragText; // Drag text of the item.
BOOL m_bAutoHeight; // TRUE if item stretched inside its group.
COLORREF m_clrText; // Text color
friend class CXTPTaskPanelGroup;
};
AFX_INLINE CRect& CXTPTaskPanelGroupItem::GetMargins() {
return m_rcMargins;
}
AFX_INLINE CRect CXTPTaskPanelGroupItem::GetItemRect() const {
return m_rcItem;
}
AFX_INLINE void CXTPTaskPanelGroupItem::SetItemRect(LPCRECT lpRect) {
::CopyRect(&m_rcItem, lpRect);
}
AFX_INLINE CSize CXTPTaskPanelGroupItem::GetSize() const {
return m_szItem;
}
AFX_INLINE BOOL CXTPTaskPanelGroupItem::IsAutoHeight() const {
return m_bAutoHeight;
}
AFX_INLINE COLORREF CXTPTaskPanelGroupItem::GetTextColor() const {
return m_clrText;
}
AFX_INLINE void CXTPTaskPanelGroupItem::SetTextColor(COLORREF clr) {
m_clrText = clr;
RedrawPanel();
}
#endif // !defined(__XTPTASKPANELGROUPITEM_H__)