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.
412 lines
16 KiB
C++
412 lines
16 KiB
C++
// XTPCalendarTimeLineViewGroup.h: interface for the CXTPCalendarTimeLineViewGroup class.
|
|
//
|
|
// This file is a part of the XTREME CALENDAR 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(__XTPCALENDARTIMELINEVIEWGROUP_H__)
|
|
#define __XTPCALENDARTIMELINEVIEWGROUP_H__
|
|
//}}AFX_CODEJOCK_PRIVATE
|
|
|
|
#if _MSC_VER > 1000
|
|
#pragma once
|
|
#endif // _MSC_VER > 1000
|
|
|
|
#pragma warning (disable: 4100)
|
|
|
|
|
|
class CXTPCalendarEvent;
|
|
class CXTPCalendarTimeLineView;
|
|
class CXTPCalendarTimeLineViewGroup;
|
|
class CXTPCalendarTimeLineViewGroups;
|
|
class CXTPCalendarTimeLineViewEvent;
|
|
class CXTPCalendarTimeLineViewPart;
|
|
|
|
//===========================================================================
|
|
// Summary:
|
|
// This class represents an event timeline view portion of the CXTPCalendarViewEvent.
|
|
// Remarks:
|
|
// It represents a specific view of the event associated data according
|
|
// to various view types and display settings and provides basic
|
|
// functionality on this data using user input through keyboard and mouse.
|
|
// CXTPCalendarTimeLineViewEvent is a descendant of the CXTPCalendarViewEvent class.
|
|
//===========================================================================
|
|
class _XTP_EXT_CLASS CXTPCalendarTimeLineViewEvent : public CXTPCalendarViewEvent
|
|
{
|
|
public:
|
|
|
|
// -----------------------------
|
|
// Summary:
|
|
// Default object constructor.
|
|
// Parameters:
|
|
// pEvent - A pointer to a CXTPCalendarEvent object.
|
|
// pGroup - A pointer to a CXTPCalendarTimeLineViewGroup object.
|
|
// -----------------------------
|
|
CXTPCalendarTimeLineViewEvent(CXTPCalendarEvent* pEvent, CXTPCalendarTimeLineViewGroup* pGroup);
|
|
|
|
// ------------------------
|
|
// Summary:
|
|
// This member function is used to calculate rectangle for event
|
|
// Parameters:
|
|
// pDC - A pointer to a valid device context.
|
|
// ------------------------
|
|
void CalcRect(CDC* pDC);
|
|
|
|
// -----------------------------
|
|
// Summary:
|
|
// This member function is used to obtain the owner view object.
|
|
// Returns:
|
|
// A CXTPCalendarTimeLineView pointer to the owner view object.
|
|
// -----------------------------
|
|
CXTPCalendarTimeLineView* GetView() const;
|
|
|
|
// -----------------------------
|
|
// Summary:
|
|
// access function to get view group
|
|
// Returns:
|
|
// current view group as pointer to CXTPCalendarTimeLineViewGroup
|
|
// -----------------------------
|
|
CXTPCalendarTimeLineViewGroup* GetViewGroup() const
|
|
{
|
|
return m_pGroup;
|
|
}
|
|
|
|
// -----------------------------
|
|
// Summary:
|
|
// access function to get view group
|
|
// Returns:
|
|
// current view group as pointer to CXTPCalendarTimeLineViewGroup
|
|
// -----------------------------
|
|
virtual CXTPCalendarViewGroup* GetViewGroup_() const;
|
|
|
|
//-----------------------------------------------------------------------
|
|
// Summary:
|
|
// This member function is used to determine which view item,
|
|
// if any, is at a specified position index, and returns additional
|
|
// info in a XTP_CALENDAR_HITTESTINFO struct.
|
|
// Parameters:
|
|
// pt - A CPoint that contains the coordinates of the point to
|
|
// test.
|
|
// pHitTest - A pointer to a XTP_CALENDAR_HITTESTINFO structure that
|
|
// contains information about the point to test.
|
|
// Returns:
|
|
// A BOOL. TRUE if the item is found. FALSE otherwise.
|
|
// See Also: XTP_CALENDAR_HITTESTINFO
|
|
//-----------------------------------------------------------------------
|
|
virtual BOOL HitTest(CPoint pt, XTP_CALENDAR_HITTESTINFO* pHitTest) const { return FALSE; };
|
|
virtual BOOL HitTestEx(CPoint pt, XTP_CALENDAR_HITTESTINFO* pHitTest) const {return FALSE; }
|
|
|
|
//-----------------------------------------------------------------------
|
|
// Summary:
|
|
// This member function is used to get is group visible.
|
|
// Returns:
|
|
// TRUE if object is visible, FALSE otherwise.
|
|
//-----------------------------------------------------------------------
|
|
virtual BOOL IsVisible() const { return FALSE; };
|
|
|
|
// -----------------
|
|
// Summary:
|
|
// This member function is used to get is group selected.
|
|
// Returns:
|
|
// TRUE if object is selected, FALSE otherwise.
|
|
// -----------------
|
|
virtual BOOL IsSelected() const;
|
|
|
|
// --------------------------------------
|
|
// Summary:
|
|
// This member function is used to adjust the view's layout
|
|
// Parameters:
|
|
// pDC - A pointer to a valid device context.
|
|
// rcEventMax - A CRect object that contains the rectangle coordinates
|
|
// that are used to draw the view.
|
|
// nEventPlaceNumber - ordinal number of event
|
|
// --------------------------------------
|
|
virtual void AdjustLayout(CDC* pDC, const CRect& rcEventMax, int nEventPlaceNumber);
|
|
|
|
// --------------------------------------
|
|
// Summary:
|
|
// This member function is used to adjust the view's layout with theme used
|
|
// Parameters:
|
|
// pDC - A pointer to a valid device context.
|
|
// rcEventMax - A CRect object that contains the rectangle coordinates
|
|
// that are used to draw the view.
|
|
// nEventPlaceNumber - ordinal number of event
|
|
// --------------------------------------
|
|
virtual void AdjustLayout2(CDC* pDC, const CRect& rcEventMax, int nEventPlaceNumber)
|
|
{
|
|
}
|
|
|
|
//-----------------------------------------------------------------------
|
|
// Summary:
|
|
// This member function is used to draw the view content using
|
|
// the specified device context.
|
|
// Parameters:
|
|
// pDC - A pointer to a valid device context.
|
|
virtual void Draw(CDC* pDC);
|
|
|
|
// ------------------------------
|
|
// Summary:
|
|
// specific for Timeline view function to organized view in logical order
|
|
// Parameters:
|
|
// nNewPlace : ordinal number to use
|
|
// ------------------------------
|
|
virtual void ChangeEventPlace(int nNewPlace);
|
|
|
|
// -----------------
|
|
// Summary:
|
|
// access function to get visual part of object
|
|
// Returns:
|
|
// pointer to CXTPCalendarTimeLineViewPart object
|
|
// -----------------
|
|
virtual CXTPCalendarTimeLineViewPart* GetPart() const;
|
|
|
|
// -----------------
|
|
// Summary:
|
|
// access function to get event duration in pixels
|
|
// Returns:
|
|
// event duration in pixels as int
|
|
// -----------------
|
|
virtual int GetEventDurationInPixels() const;
|
|
|
|
// -----------------
|
|
// Summary:
|
|
// Returns the rect in client coordinates into which the event was drawn last time
|
|
// Note
|
|
// GetLastVisibleRect and SetLastVisibleRect are workaround functions for HitTest in Timeline view
|
|
// The SetLastVisibleRects called by draw operation each time the event is drawn in timeline view
|
|
// The GetLastVisibleRect is used in HitTest function to determine the hittest info
|
|
// -----------------
|
|
const CRect& GetLastVisibleRect() const;
|
|
|
|
// -----------------
|
|
// Summary:
|
|
// Sets the rect in client coordinates into which the event was drawn last time
|
|
// Note
|
|
// GetLastVisibleRect and SetLastVisibleRect are workaround functions for HitTest in timeline view
|
|
// The SetLastVisibleRects called by draw operation each time the event is drawn in timeline view
|
|
// The GetLastVisibleRect is used in HitTest function to determine the hittest info
|
|
// -----------------
|
|
void SetLastVisibleRect(const CRect& rc);
|
|
|
|
|
|
protected:
|
|
CXTPCalendarTimeLineViewGroup * m_pGroup; // internal nmember to keep pointer to CXTPCalendarTimeLineViewGroup
|
|
int m_nEventDurationInPixels; // internal nmember to keep event duration in pixels value
|
|
CRect m_rcLastVisible;
|
|
};
|
|
|
|
//===========================================================================
|
|
// Summary:
|
|
// This class represents an event timeline view portion of the CalendarViewGroup.
|
|
// Remarks:
|
|
// It represents a specific view of the event associated data according
|
|
// to various view types and display settings and provides basic
|
|
// functionality on this data using user input through keyboard and mouse.
|
|
// CXTPCalendarTimeLineViewGroup is a descendant of the CXTPCalendarViewGroup class.
|
|
//===========================================================================
|
|
class _XTP_EXT_CLASS CXTPCalendarTimeLineViewGroup : public CXTPCalendarViewGroup
|
|
{
|
|
public:
|
|
//-----------------------------------------------------------------------
|
|
// Summary:
|
|
// Base class type definition.
|
|
//-----------------------------------------------------------------------
|
|
typedef CXTPCalendarViewGroup TBase;
|
|
|
|
// -----------------------------
|
|
// Summary:
|
|
// Default object constructor.
|
|
// Parameters:
|
|
// pView - A pointer to a CXTPCalendarTimeLineView object.
|
|
// pParentGroup - A pointer to a CXTPCalendarTimeLineViewGroup object.
|
|
// -----------------------------
|
|
CXTPCalendarTimeLineViewGroup(CXTPCalendarTimeLineView* pView,
|
|
CXTPCalendarTimeLineViewGroup* pParentGroup = NULL);
|
|
|
|
//-----------------------------------------------------------------------
|
|
// Summary:
|
|
// Default class destructor.
|
|
//-----------------------------------------------------------------------
|
|
virtual ~CXTPCalendarTimeLineViewGroup();
|
|
|
|
//-----------------------------------------------------------------------
|
|
// Summary:
|
|
// This member function is used to populate the view with data for
|
|
// all event items contained in the view.
|
|
// Parameters:
|
|
// dtDayDate - A COleDateTime object that contains the day's date.
|
|
// Remarks:
|
|
// This function provides common functionality for all CXTPCalendarViewGroup -
|
|
// derived classes.
|
|
//-----------------------------------------------------------------------
|
|
virtual void Populate(COleDateTime dtDayDate) {};
|
|
|
|
//-----------------------------------------------------------------------
|
|
// Summary:
|
|
// This member function is used to populate the view with data for
|
|
// all event items contained in the view.
|
|
// Parameters:
|
|
// pEvents - pointer to CXTPCalendarEvents.
|
|
//-----------------------------------------------------------------------
|
|
virtual void Populate(CXTPCalendarEvents* pEvents);
|
|
|
|
//-----------------------------------------------------------------------
|
|
// Summary:
|
|
// This member function is used to adjust the view's layout
|
|
// depending on the provided rectangle and calls AdjustLayout()
|
|
// for all sub-items.
|
|
// Parameters:
|
|
// pDC - A pointer to a valid device context.
|
|
// rcGroup - rectangle used to draw the group.
|
|
// ----------------------------
|
|
virtual void AdjustLayout(CDC* pDC, const CRect& rcGroup);
|
|
|
|
// ----------------------------------------------------------------------
|
|
// Summary:
|
|
// This member function is used to draw the group using the specified
|
|
// device context.
|
|
// Parameters:
|
|
// pDC : A pointer to a valid device context.
|
|
// nOffset : Vertical offset to draw.
|
|
// ----------------------------------------------------------------------
|
|
virtual void Draw(CDC* pDC, int nOffset = 0);
|
|
|
|
//-----------------------------------------------------------------------
|
|
// Summary:
|
|
// This member function is used to determine which view item,
|
|
// if any, is at a specified position index, and returns additional
|
|
// info in a XTP_CALENDAR_HITTESTINFO struct.
|
|
// Parameters:
|
|
// pt - A CPoint that contains the coordinates of the point to
|
|
// test.
|
|
// pHitTest - A pointer to a XTP_CALENDAR_HITTESTINFO structure that
|
|
// contains information about the point to test.
|
|
// Returns:
|
|
// A BOOL. TRUE if the item is found. FALSE otherwise.
|
|
// See Also: XTP_CALENDAR_HITTESTINFO
|
|
//-----------------------------------------------------------------------
|
|
virtual BOOL HitTest(CPoint pt, XTP_CALENDAR_HITTESTINFO* pHitTest) const {return FALSE; };
|
|
virtual void FillHitTestEx(XTP_CALENDAR_HITTESTINFO* pHitTest) const {}
|
|
|
|
// Summary:
|
|
// This member function is used to obtain the owner view object.
|
|
// Returns:
|
|
// A CXTPCalendarTimeLineView pointer to the owner view object.
|
|
//-----------------------------------------------------------------------
|
|
CXTPCalendarTimeLineView* GetView() const
|
|
{
|
|
return (CXTPCalendarTimeLineView*)m_pView;
|
|
}
|
|
|
|
// ---------------------------
|
|
// Summary:
|
|
// Call this member function to obtain a pointer to the base CXTPCalendarViewEvent*
|
|
// object that corresponds to the event's index.
|
|
// Parameters:
|
|
// nIndex : index of event in m_arEvents
|
|
// Returns:
|
|
// pointer to CXTPCalendarViewEvent object
|
|
// ---------------------------
|
|
virtual CXTPCalendarTimeLineViewEvent* GetViewEvent(int nIndex) const
|
|
{
|
|
return (CXTPCalendarTimeLineViewEvent*)m_arEvents.GetAt(nIndex);
|
|
}
|
|
|
|
//-----------------------------------------------------------------------
|
|
// Summary:
|
|
// Call this member function to obtain a pointer to the containing
|
|
// CXTPCalendarViewDay object.
|
|
// Returns:
|
|
// A pointer to the CXTPCalendarViewDay object.
|
|
//-----------------------------------------------------------------------
|
|
virtual CXTPCalendarViewDay* GetViewDay_() const
|
|
{
|
|
ASSERT(FALSE);
|
|
return 0;
|
|
}
|
|
|
|
//-----------------------------------------------------------------------
|
|
// Summary:
|
|
// Call this member function to obtain a pointer to the calendar control
|
|
// object.
|
|
// Returns:
|
|
// A pointer to a CXTPCalendarControl object.
|
|
//-----------------------------------------------------------------------
|
|
virtual CXTPCalendarControl* GetCalendarControl() const;
|
|
|
|
// ---------------------------
|
|
// Summary:
|
|
// Call this member function to obtain current height of group
|
|
// Returns:
|
|
// int height value
|
|
// ---------------------------
|
|
int GetGroupHeight();
|
|
|
|
void AddViewEvent(CXTPCalendarEvent* pEvent);
|
|
|
|
virtual CXTPCalendarViewEvent* CreateViewEvent(CXTPCalendarEvent* pEvent);
|
|
|
|
|
|
protected:
|
|
//------------------------------------------------------------------------
|
|
// Remarks:
|
|
// Event views collection type definition.
|
|
//------------------------------------------------------------------------
|
|
typedef CXTPCalendarPtrCollectionT<CXTPCalendarTimeLineViewEvent> TViewEventsCollection;
|
|
|
|
CXTPCalendarTimeLineViewGroup* m_pParentGroup; // pointer to the owner view group object
|
|
|
|
CXTPCalendarTimeLineViewGroups* m_pChildren; // not used in current version - always NULL
|
|
|
|
CXTPCalendarTimeLineView* m_pView;
|
|
};
|
|
|
|
//===========================================================================
|
|
// Summary:
|
|
// This class represents an collection of CXTPCalendarTimeLineViewGroup objects
|
|
//===========================================================================
|
|
class _XTP_EXT_CLASS CXTPCalendarTimeLineViewGroups : public CXTPCalendarPtrCollectionT<CXTPCalendarTimeLineViewGroup>
|
|
{
|
|
};
|
|
|
|
/////////////////////////////////////////////////////////////////////////////
|
|
AFX_INLINE CXTPCalendarViewGroup* CXTPCalendarTimeLineViewEvent::GetViewGroup_() const {
|
|
return m_pGroup;
|
|
}
|
|
|
|
AFX_INLINE int CXTPCalendarTimeLineViewEvent::GetEventDurationInPixels() const {
|
|
return m_nEventDurationInPixels;
|
|
}
|
|
AFX_INLINE const CRect& CXTPCalendarTimeLineViewEvent::GetLastVisibleRect() const {
|
|
return m_rcLastVisible;
|
|
}
|
|
|
|
AFX_INLINE void CXTPCalendarTimeLineViewEvent::SetLastVisibleRect(const CRect& rc) {
|
|
m_rcLastVisible = rc;
|
|
}
|
|
|
|
//===========================================================================
|
|
|
|
AFX_INLINE void CXTPCalendarTimeLineViewGroup::AddViewEvent(CXTPCalendarEvent* /*pEvent*/) {
|
|
ASSERT(FALSE);
|
|
}
|
|
|
|
//===========================================================================
|
|
|
|
#endif // !defined(__XTPCALENDARTIMELINEVIEWGROUP_H__)
|