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++

// 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__)