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.

324 lines
13 KiB
C++

// XTPCalendarMonthViewDay.h: interface for the CXTPCalendarMonthViewDay 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(_XTPCALENDARMONTHVIEWDAY_H__)
#define _XTPCALENDARMONTHVIEWDAY_H__
//}}AFX_CODEJOCK_PRIVATE
#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000
//{{AFX_CODEJOCK_PRIVATE
class CXTPCalendarMonthView;
//}}AFX_CODEJOCK_PRIVATE
//===========================================================================
// Summary: Forward definition of the structure.
//===========================================================================
struct XTP_CALENDAR_HITTESTINFO;
//===========================================================================
// Summary:
// This class represents a single resource view portion of the Calendar
// Month View.
// Remarks:
// It represents a specific view of the CalendarView's associated events
// data grouped by one day and one resource group. And provides basic
// functionality on this data using user input through keyboard and mouse.
//
// See Also: CXTPCalendarMonthViewDay
//===========================================================================
class _XTP_EXT_CLASS CXTPCalendarMonthViewGroup : public CXTPCalendarViewGroupT<
CXTPCalendarMonthViewDay,
CXTPCalendarMonthViewEvent,
CXTPCalendarMonthViewGroup>
{
public:
//------------------------------------------------------------------------
// Summary:
// Base class type definition.
//------------------------------------------------------------------------
typedef CXTPCalendarViewGroupT< CXTPCalendarMonthViewDay,
CXTPCalendarMonthViewEvent,
CXTPCalendarMonthViewGroup > TBase;
//-----------------------------------------------------------------------
// Summary:
// Default object constructor.
// Construct CXTPCalendarMonthViewGroup object.
// Parameters:
// pViewDay - Pointer to CXTPCalendarMonthViewDay object.
//-----------------------------------------------------------------------
CXTPCalendarMonthViewGroup(CXTPCalendarMonthViewDay* pViewDay);
//-----------------------------------------------------------------------
// Summary:
// Default class destructor.
// Remarks:
// Handles member items deallocation.
//-----------------------------------------------------------------------
virtual ~CXTPCalendarMonthViewGroup();
//-----------------------------------------------------------------------
// Summary:
// Call this member function to obtain the bounding rectangle of
// the tooltip space (currently this is only "click to add new appointment").
// Tooltip rectangle is calculated basing on the current mouse position
// Parameters:
// ptHit : mouse position point
// hitInfo : info to get
// Returns:
// A CRect object with relative coordinates of the tooltip.
// Remarks:
// This member function returns a rectangle calculated as a bottom
// cell rect of the day area where user currently holds a mouse on.
//-----------------------------------------------------------------------
virtual CRect GetTooltipRect(const CPoint& ptHit, const XTP_CALENDAR_HITTESTINFO& hitInfo) const;
protected:
//-----------------------------------------------------------------------
// Summary:
// This member function is used to obtain a pointer to itself.
// Remarks:
// Call this member function to get the "this" pointer.
// Returns:
// Pointer to a CXTPCalendarMonthViewGroup.
//-----------------------------------------------------------------------
virtual CXTPCalendarMonthViewGroup* GetPThis();
//-----------------------------------------------------------------------
// Summary:
// This member function is used to fill a
// XTP_CALENDAR_HITTESTINFO structure.
// Parameters:
// pHitTest - Pointer to XTP_CALENDAR_HITTESTINFO structure.
// Remarks:
// Call this member function to gather hit-test information.
// See Also: XTP_CALENDAR_HITTESTINFO
//-----------------------------------------------------------------------
virtual void FillHitTestEx(XTP_CALENDAR_HITTESTINFO* pHitTest) const;
};
AFX_INLINE CXTPCalendarMonthViewGroup* CXTPCalendarMonthViewGroup::GetPThis()
{
return this;
}
//===========================================================================
// Summary:
// This class represents a day view portion of the CalendarMonthView.
// Remarks:
// It represents a specific view of the CalendarView's associated events
// data grouped by one day and provides basic functionality on this
// data using user input through keyboard and mouse.
//
// CXTPCalendarMonthViewDay is based on CXTPCalendarViewDayT template
// class. It inherits basic behavior from its parent and overlaps/add some
// methods to get its own behavior and look.
//
// See Also: CXTPCalendarViewDay, CXTPCalendarViewDayT
//===========================================================================
class _XTP_EXT_CLASS CXTPCalendarMonthViewDay : public CXTPCalendarViewDayT<
CXTPCalendarMonthView,
CXTPCalendarMonthViewGroup,
XTP_CALENDAR_HITTESTINFO,
CXTPCalendarMonthViewDay >
{
//{{AFX_CODEJOCK_PRIVATE
friend class CXTPCalendarMonthViewEvent;
DECLARE_DYNAMIC(CXTPCalendarMonthViewDay)
//}}AFX_CODEJOCK_PRIVATE
public:
//------------------------------------------------------------------------
// Summary:
// Base class type definition.
//------------------------------------------------------------------------
typedef CXTPCalendarViewDayT< CXTPCalendarMonthView,
CXTPCalendarMonthViewGroup,
XTP_CALENDAR_HITTESTINFO,
CXTPCalendarMonthViewDay > TBase;
// --------------------------------------------------------------------
// Summary:
// Default object constructor. Construct a CXTPCalendarMonthViewDay
// object.
// Parameters:
// pMonthView : Pointer to CXTPCalendarMonthView object.
// nWeekIndex : An int that contains a week view identifier.
// nWeekDayIndex : An int that contains a day view identifier.
// See Also:
// ~CXTPCalendarMonthViewDay()
// --------------------------------------------------------------------
CXTPCalendarMonthViewDay(const CXTPCalendarMonthView* pMonthView, int nWeekIndex, int nWeekDayIndex);
//-----------------------------------------------------------------------
// Summary:
// Default class destructor.
// Remarks:
// Handles member items deallocation.
//-----------------------------------------------------------------------
virtual ~CXTPCalendarMonthViewDay();
//-----------------------------------------------------------------------
// Summary:
// This member function is used to adjust the view's layout
// depending on the provided rectangle and then calls
// AdjustLayout() for all sub-items.
// Parameters:
// pDC - Pointer to a valid device context.
// rcDay - A CRect object that contains the coordinates for
// drawing the view.
// Remarks:
// Call Populate(COleDateTime dtDayDate) prior to calling AdjustLayout().
// AdjustLayout2 is called by calendar control instead of AdjustLayout
// when theme is set.
//-----------------------------------------------------------------------
virtual void AdjustLayout(CDC* pDC, const CRect& rcDay);
virtual void AdjustLayout2(CDC* pDC, const CRect& rcDay); //<COMBINE AdjustLayout>
//-----------------------------------------------------------------------
// Summary:
// This member function is used to draw the view contents using
// the specified device context.
// Parameters:
// pDC - Pointer to a valid device context.
// Remarks:
// Call AdjustLayout() before Draw()
// See Also: AdjustLayout(CRect rcDay)
//-----------------------------------------------------------------------
virtual void Draw(CDC* pDC);
//-----------------------------------------------------------------------
// Summary:
// This member function is used to fill a
// XTP_CALENDAR_HITTESTINFO structure.
// Parameters:
// pInfo - Pointer to XTP_CALENDAR_HITTESTINFO structure.
// Remarks:
// Call this member function to gather hit-test information.
// See Also: XTP_CALENDAR_HITTESTINFO
//-----------------------------------------------------------------------
virtual void FillHitTestEx(XTP_CALENDAR_HITTESTINFO* pInfo) const;
//-----------------------------------------------------------------------
// Summary:
// This member function is used to determine which view item,
// if any, is at the specified position index, and returns additional
// info in the XTP_CALENDAR_HITTESTINFO template object.
// Parameters:
// pt - A CPoint that contains the coordinates of the point test.
// pHitTest - A pointer to a XTP_CALENDAR_HITTESTINFO structure.
// Remarks:
// Implements standard functionality for the HitTestEx method.
// Returns:
// A BOOL. TRUE if the item is found. FALSE otherwise.
// See Also: XTP_CALENDAR_HITTESTINFO
//-----------------------------------------------------------------------
virtual BOOL HitTestEx(CPoint pt, XTP_CALENDAR_HITTESTINFO* pHitTest) const;
//-----------------------------------------------------------------------
// Summary:
// This member function is used to calculate the day date bounding
// rectangle.
// Returns:
// A CRect object denoting the day date bounding rectangle.
// Remarks:
// Call this member function to determine the day view header's
// bounding rectangle.
//-----------------------------------------------------------------------
CRect CalcDayDateRect() const;
//-----------------------------------------------------------------------
// Summary:
// This member function is used to calculate the day view area in
// which to draw event views.
// Remarks:
// Call this member function to determine day view area that is
// used for drawing the event views.
// Returns:
// CRect object with rectangle coordinates.
//-----------------------------------------------------------------------
CRect GetDayEventsRect() const;
virtual void SetSelected();
protected:
//-----------------------------------------------------------------------
// Summary:
// This member function is used to processes left mouse button events.
// Parameters:
// nFlags - A UINT that is used to indicates whether various virtual
// keys are down.
// point - A CPoint that specifies the x- and y- coordinates of the cursor.
// These coordinates are always relative to the
// upper-left corner of the window.
// Returns:
// TRUE if the message is handled properly, FALSE else.
// Remarks:
// This method is called by the CalendarControl when the user
// presses the left mouse button.
//-----------------------------------------------------------------------
virtual BOOL OnLButtonDown(UINT nFlags, CPoint point);
//-----------------------------------------------------------------------
// Summary:
// This member function is used to processes mouse movement events.
// Parameters:
// nFlags - A UINT that is used to indicate whether various virtual
// keys are down.
// point - A CPoint that specifies the x- and y- coordinates of the cursor.
// These coordinates are always relative to the
// upper-left corner of the window.
// Remarks:
// This method is called by the CalendarControl when the user
// moves the mouse cursor or stylus.
//-----------------------------------------------------------------------
virtual void OnMouseMove(UINT nFlags, CPoint point);
//-----------------------------------------------------------------------
// Summary:
// This member function is used to obtain a pointer to itself.
// Remarks:
// Call this member function to get the "this" pointer.
// Returns:
// Pointer to a CXTPCalendarMonthViewDay.
//-----------------------------------------------------------------------
virtual CXTPCalendarMonthViewDay* GetPThis();
int m_nWeekIndex; // Week identifier.
int m_nWeekDayIndex; // Day identifier.
};
//===========================================================================
AFX_INLINE CXTPCalendarMonthViewDay* CXTPCalendarMonthViewDay::GetPThis() {
return this;
}
#endif // !defined(_XTPCALENDARMONTHVIEWDAY_H__)