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.

1150 lines
49 KiB
C++

// XTPCalendarDayView.h: interface for the CXTPCalendarDayView 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(_XTPCALENDARDAYVIEW_H__)
#define _XTPCALENDARDAYVIEW_H__
//}}AFX_CODEJOCK_PRIVATE
#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000
class CXTPCalendarDayViewTimeScale;
class CXTPCalendarDayViewDay;
class CXTPCalendarTimeZone;
XTP_DEFINE_SMART_PTR_INTERNAL(CXTPCalendarTimeZone)
//===========================================================================
// Summary:
// This class implements a specific view portion of the Calendar
// control - called <b>Day view</b>.
// Remarks:
// The Day view consists of one or more days, placed in a
// row. Each day is stretched down by a number of fixed time
// intervals. Each day is represented by a CXTPCalendarDayViewDay class.
//
// The Day view also contains two time scales defining those intervals
// at the left of the view, which is represented by the
// CXTPCalendarDayViewTimeScale class. One time scale is the main and
// is visible by default, second one is the alternative and can be
// enabled programmatically. Time scale interval can be changed
// using the SetScaleInterval member function. The content of the view
// refreshes automatically.
//
// See Also: CXTPCalendarView, CXTPCalendarWeekView, CXTPCalendarMonthView,
// CXTPCalendarDayViewDay, CXTPCalendarDayViewEvent
//===========================================================================
class _XTP_EXT_CLASS CXTPCalendarDayView : public CXTPCalendarViewT<CXTPCalendarDayViewDay>
{
//{{AFX_CODEJOCK_PRIVATE
friend class CXTPCalendarDayViewDay;
friend class CXTPCalendarDayViewGroup;
friend class CXTPCalendarDayViewTimeScale;
friend class CXTPCalendarControl;
friend class CXTPCalendarControlView;
friend class CXTPCalendarTheme;
DECLARE_DYNAMIC(CXTPCalendarDayView)
//}}AFX_CODEJOCK_PRIVATE
public:
//------------------------------------------------------------------------
// Remarks:
// Base class type definition
//------------------------------------------------------------------------
typedef CXTPCalendarViewT<CXTPCalendarDayViewDay> TBase;
public:
//-----------------------------------------------------------------------
// Summary:
// Default object constructor.
// Parameters:
// pCalendarControl - Pointer to CXTPCalendarControl object.
// See Also: ~CXTPCalendarEvent()
//-----------------------------------------------------------------------
CXTPCalendarDayView(CXTPCalendarControl* pCalendarControl);
//-----------------------------------------------------------------------
// Summary:
// Default class destructor.
// Remarks:
// Handles class members deallocation.
//-----------------------------------------------------------------------
virtual ~CXTPCalendarDayView();
//-----------------------------------------------------------------------
// Summary:
// Call this member function to obtain the view type flag.
// Returns:
// An XTPCalendarViewType object that contains the view type flag.
// See Also: XTPCalendarViewType
//-----------------------------------------------------------------------
virtual XTPCalendarViewType GetViewType() const;
//-----------------------------------------------------------------------
// Summary:
// This member function is used to adjust the view's layout
// depending on the window's client dimensions and calls.
// Parameters:
// pDC - Pointer to a valid device context.
// rcView - A CRect that contains the bounding rectangle dimensions
// of the view.
// bCallPostAdjustLayout - TRUE for calling additional post-adjustments
// Remarks:
// Call Populate() prior adjusting layout. Adjust layout of all
// sub-items.
// AdjustLayout2 is called by calendar control instead of AdjustLayout
// when theme is set.
//-----------------------------------------------------------------------
virtual void AdjustLayout(CDC* pDC, const CRect& rcView, BOOL bCallPostAdjustLayout = TRUE);
virtual void AdjustLayout2(CDC* pDC, const CRect& rcView, BOOL bCallPostAdjustLayout = TRUE); //<COMBINE AdjustLayout>
//-----------------------------------------------------------------------
// Summary:
// This member function is used to retrieve information about a
// scroll bar's state.
// Parameters:
// pSI - A pointer to scrollbar information structure.
// pnScrollStep - A pointer to int to receive scroll step. Can be NULL.
// Returns: A BOOL.
// TRUE if the visible row count is not the same as the actual row count.
// FALSE otherwise.
//-----------------------------------------------------------------------
virtual BOOL GetScrollBarInfoV(SCROLLINFO* pSI) const;
virtual BOOL GetScrollBarInfoH(SCROLLINFO* pSI, int* pnScrollStep = NULL) const; //<COMBINE CXTPCalendarDayView::GetScrollBarInfoV@SCROLLINFO*@const>
//-----------------------------------------------------------------------
// Summary:
// This member function is used to scroll the content of a view.
// Parameters:
// nPos - Position value.
// nPos_raw - Raw position value. (Not used at this time.)
//-----------------------------------------------------------------------
virtual void ScrollV(int nPos, int nPos_raw);
//-----------------------------------------------------------------------
// Summary:
// This member function is used to scroll the content of a view.
// Parameters:
// nPos - Position value.
// nPos_raw - Raw position value. (Not used at this time.)
//-----------------------------------------------------------------------
virtual void ScrollH(int nPos, int nPos_raw);
//-----------------------------------------------------------------------
// Summary:
// This member function returns values which interpreted as a minimum
// column width, where column is a group view object.
// Remarks:
// The returned number may be one of the following values:
// [ul]
// [li] 0 means disabled;
// [li] -1 use some default width for multiresources only;
// [li] -N use for multiresources only (internally converted to +N);
// [li] +N used always (in single and multi resources mode).
// [/ul]
//
// Returns:
// Minimum column width in pixels (may be negative) or 0 or -1.
// See Also: SetMinColumnWidth
//-----------------------------------------------------------------------
virtual int GetMinColumnWidth() const;
//-----------------------------------------------------------------------
// Summary:
// This member function used to set minimum column width, where column
// is a group view object.
// Parameters:
// nWidth - [in] Minimum column width in pixels (may be negative) or 0 or -1.
// See remarks section.
// Remarks:
// nWidth number may be one of the following values:
// [ul]
// [li] 0 means disabled;
// [li] -1 use some default width for multiresources only;
// [li] -N use for multiresources only (internally converted to +N);
// [li] +N used always (in single and multi resources mode).
// [/ul]
//
// See Also: GetMinColumnWidth
//-----------------------------------------------------------------------
virtual void SetMinColumnWidth(int nWidth);
//-----------------------------------------------------------------------
// Summary:
// This member function performs all of the drawing logic of the
// calendar view.
// Parameters:
// pDC - Pointer to a valid device context.
//-----------------------------------------------------------------------
virtual void OnDraw(CDC* pDC);
//-----------------------------------------------------------------------
// Summary:
// This member function is used to draw the view content using the
// specified device context.
// Parameters:
// pDC - Pointer to a valid device context.
// Remarks:
// Call AdjustLayout() before Draw()
// Draw2 is called by calendar control instead of Draw when theme
// is set.
// See Also: AdjustLayout
//-----------------------------------------------------------------------
virtual void Draw(CDC* pDC);
virtual void Draw2(CDC* pDC); //<COMBINE Draw>
//-----------------------------------------------------------------------
// Summary:
// This member function is used to process left mouse button events.
// Parameters:
// nFlags - Indicates whether various virtual keys are down.
// point - Specifies the x- and y- coordinate of the cursor.
// These coordinates are always relative to the upper-left corner
// of the window.
// Returns:
// TRUE if the operation is successful, 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 left mouse button 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.
// Returns:
// TRUE if the operation is successful, FALSE else.
// Remarks:
// This method is called by the CalendarControl when the user
// releases the left mouse button.
//-----------------------------------------------------------------------
virtual BOOL OnLButtonUp(UINT nFlags, CPoint point);
//-----------------------------------------------------------------------
// Summary:
// This member function is used to process mouse move events.
// Parameters:
// nFlags - Indicates whether various virtual keys are down.
// point - Specifies the x- and y- coordinate 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 process keyboard events.
// Parameters:
// nChar - Virtual key code of the given key.
// nRepCnt - Number of times the keystroke is repeated as a result
// of the user holding down the key.
// nFlags - Scan code, key-transition code, previous key state,
// and context code.
// Remarks:
// This method is called by the CalendarControl when the user
// presses keys on the keyboard.
//-----------------------------------------------------------------------
virtual void OnKeyDown(UINT nChar, UINT nRepCnt, UINT nFlags);
//-----------------------------------------------------------------------
// Summary:
// Call this member function to get the date of a day view by the
// day's index.
// Parameters:
// nIndex - Day view index in the view collection.
// Returns:
// COleDateTime object with the day view date and time.
// Remarks:
// Index number starts at 0 and cannot be negative.
// See Also: GetViewDayCount()
//-----------------------------------------------------------------------
virtual COleDateTime GetViewDayDate(int nIndex) 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 structure.
// Parameters:
// pt - Coordinates of point to test.
// pHitTest - Pointer to a XTP_CALENDAR_HITTESTINFO structure.
// Returns:
// TRUE if item 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 obtain the visible row count
// on the view.
// Returns:
// An int containing the count of the visible rows on the view.
//-----------------------------------------------------------------------
int GetVisibleRowCount() const;
//-----------------------------------------------------------------------
// Summary:
// This member function is used to obtain the top visible row on the view.
// Returns:
// An int that contains the number of the top visible row on the view.
//-----------------------------------------------------------------------
int GetTopRow() const;
//-----------------------------------------------------------------------
// Summary:
// This member function is used to obtain the total row count on the view.
// Returns:
// An int containing the total count of rows on the view.
//-----------------------------------------------------------------------
int GetRowCount() const;
/////////////////////////////////////////////////////////////////////////
// time scale related
//-----------------------------------------------------------------------
// Summary:
// This member function is used to obtain the time scale item interval.
// Returns:
// A COleDateTimeSpan object that contains the time interval of
// the time scale item.
//-----------------------------------------------------------------------
COleDateTimeSpan GetScaleInterval() const;
//-----------------------------------------------------------------------
// Summary:
// This member function is used to set the time scale item interval.
// Parameters:
// spScaleInterval - A COleDateTimeSpan object that contains the
// new time scale item interval.
//-----------------------------------------------------------------------
void SetScaleInterval(const COleDateTimeSpan spScaleInterval);
//-----------------------------------------------------------------------
// Summary:
// This member function is used to obtain the minimal time which is
// shown on the day view scale.
// Returns:
// A COleDateTime object that contains the minimal scale time.
//-----------------------------------------------------------------------
COleDateTime GetScaleMinTime() const;
//-----------------------------------------------------------------------
// Summary:
// This member function is used to set the minimal time which is
// shown on the day view scale.
// Remarks:
// Only time part of the argument will be used by the control.
// It will be used for all dates. Date part of the argument is ignored.
// Parameters:
// dtNewScaleMinTime - A COleDateTime object that contains the
// new minimal time scale value.
//-----------------------------------------------------------------------
void SetScaleMinTime(const COleDateTime dtNewScaleMinTime);
//-----------------------------------------------------------------------
// Summary:
// This member function is used to obtain the maximal time which is
// shown on the day view scale.
// Returns:
// A COleDateTime object that contains the maximal scale time.
//-----------------------------------------------------------------------
COleDateTime GetScaleMaxTime() const;
//-----------------------------------------------------------------------
// Summary:
// This member function is used to set the maximal time which is
// shown on the day view scale.
// Remarks:
// Only time part of the argument will be used by the control.
// It will be used for all dates. Date part of the argument is ignored.
// Parameters:
// dtNewScaleMaxTime - A COleDateTime object that contains the
// new maximal time scale value.
//-----------------------------------------------------------------------
void SetScaleMaxTime(const COleDateTime dtNewScaleMaxTime);
//-----------------------------------------------------------------------
// Summary:
// This member function is used to set the text label for the
// default time scale.
// Parameters:
// strText - A CString that contains the new text label for the
// default time label.
//-----------------------------------------------------------------------
void SetScaleText(LPCTSTR strText);
//-----------------------------------------------------------------------
// Summary:
// This member function is used to obtain the text label of the
// default time scale.
// Returns:
// A CString object that contains the default time scale text label.
//-----------------------------------------------------------------------
CString GetScaleText() const;
//-----------------------------------------------------------------------
// Summary:
// This member function is used to set the text label for the
// alternative time scale.
// Parameters:
// strText - A CString that contains the new text label.
//-----------------------------------------------------------------------
void SetScale2Text(LPCTSTR strText);
//-----------------------------------------------------------------------
// Summary:
// This member function is used to obtain the text label of the
// alternative time scale.
// Returns:
// A CString object that contains the alternative time scale text label.
//-----------------------------------------------------------------------
CString GetScale2Text() const;
//-----------------------------------------------------------------------
// Summary:
// This member function is used to set the time zone information for
// the alternative time scale.
// Parameters:
// pTzInfo - A pointer to time zone information structure.
// See Also:
// MSDN Articles:
// INFO: Retrieving Time-Zone Information
// KB115231, Q115231
//
// HOWTO: Change Time Zone Information Using Visual Basic
// KB221542, Q221542
//
//-----------------------------------------------------------------------
void SetScale2TimeZone(const TIME_ZONE_INFORMATION* pTzInfo);
//-----------------------------------------------------------------------
// Summary:
// This member function is used to get the time zone information for
// the alternative time scale.
// Returns:
// A reference to time zone information structure.
//-----------------------------------------------------------------------
const TIME_ZONE_INFORMATION& GetScale2TimeZone() const;
//-----------------------------------------------------------------------
// Summary:
// Get full information about current time zone.
// Remarks:
// Retrieve additional information from the registry.
// Returns:
// A smart pointer to CXTPCalendarTimeZone object.
// See Also:
// GetTimeZoneInformation(), CXTPCalendarTimeZone::GetTimeZoneInfo()
//-----------------------------------------------------------------------
CXTPCalendarTimeZonePtr GetCurrentTimeZoneInfo() const;
//-----------------------------------------------------------------------
// Summary:
// Get full information about additional time scale time zone.
// Remarks:
// Retrieve additional information from the registry.
// Returns:
// A smart pointer to CXTPCalendarTimeZone object.
// See Also:
// GetTimeZoneInformation(), CXTPCalendarTimeZone::GetTimeZoneInfo()
//-----------------------------------------------------------------------
CXTPCalendarTimeZonePtr GetScale2TimeZoneInfo() const; // scale 2
//-----------------------------------------------------------------------
// Summary:
// This member function is used to Show or hide the alternative
// time scale.
// Parameters:
// bShow - A BOOL that contains the new visibility flag value.
// TRUE - Default value, shows the alternative time scale.
// FALSE - Do not show the default value.
//-----------------------------------------------------------------------
void ShowScale2(BOOL bShow = TRUE);
//-----------------------------------------------------------------------
// Summary:
// This member function is used to obtain the visibility flag of
// the alternative time scale.
// Returns:
// A BOOL that contains the visibility flag value.
// TRUE - If the alternative time scale is visible.
// FALSE - If the alternative time scale is not visible.
//-----------------------------------------------------------------------
BOOL IsScale2Visible() const;
//-----------------------------------------------------------------------
// Summary:
// This member function is used to obtain the Expand Up glyph
// flag value.
// Returns:
// A BOOL that contains the Expand Up glyph flag value.
// TRUE - If the Expand Up glyph is visible.
// FALSE - If the Expand Up glyph is not visible.
//-----------------------------------------------------------------------
BOOL IsExpandUp() const;
//-----------------------------------------------------------------------
// Summary:
// This member function is used to obtain the Expand Down glyph
// flag value.
// Returns:
// A BOOL that contains the Expand Down flag value.
// TRUE - If the Expand Down glyph is visible.
// FALSE - If the Expand Down glyph is not visible.
//-----------------------------------------------------------------------
BOOL IsExpandDown() const;
/////////////////////////////////////////////////////////////////////////
// cells related
//-----------------------------------------------------------------------
// Summary:
// This member function is used to obtain the time value for
// the specified cell.
// Parameters:
// nCell - An int that contains a cell number.
// Returns:
// A COleDateTime object that contains the specific time value
// for the cell's beginning coordinate.
//-----------------------------------------------------------------------
COleDateTime GetCellTime(int nCell) const;
//-----------------------------------------------------------------------
// Summary:
// This member function is used to obtain the current cell duration.
// Returns:
// A COleDateTimeSpan object that contains the amount of time between
// a cell's start coordinates and the next cell's starting coordinates.
//-----------------------------------------------------------------------
COleDateTimeSpan GetCellDuration() const;
//-----------------------------------------------------------------------
// Summary:
// This member function is used to calculate the cell number for
// the specified time value.
// Parameters:
// dtTime - A COleDateTime object that contains a time
// value to check for.
// bForEndTime - A BOOL that contains the value that indicates if
// we should consider a split line between cells to
// belong to the end of the previous
// cell or to the beginning of the next cell.
// Returns:
// Call this member function when you want to retrieve which cell
// contains a specified time value.
//-----------------------------------------------------------------------
int GetCellNumber(COleDateTime dtTime, BOOL bForEndTime) const;
//-----------------------------------------------------------------------
// Summary:
// This member function is used to calculate the cell number for
// the specified time value.
// Parameters:
// nHour - An int that contains the hour part of the time value to check for.
// nMin - An int that contains the minute part of the time value to check for.
// nSec - An int that contains the second part of the time value to check for.
// bForEndTime - A BOOL that contains the value that indicates if
// we should consider a split line between cells to
// belong to the end of the previous
// cell or to the beginning of the next cell.
// Returns:
// Call this member function when you want to retrieve which cell
// contains a specified time value.
//-----------------------------------------------------------------------
int GetCellNumber(int nHour, int nMin, int nSec, BOOL bForEndTime) const;
/////////////////////////////////////////////////////////////////////////
// selection related
//-----------------------------------------------------------------------
// Summary:
// This member function is used to obtain the view selection.
// Parameters:
// pBegin - A pointer to the COleDateTime object
// that contains the beginning of the selection.
// pEnd - A pointer to the COleDateTime object
// that contains the ending of the selection.
// pbAllDayEvent - A pointer to the BOOL variable
// that contains the AllDayEvent attribute of
// the selection (used in the day view only).
// pnGroupIndex - A pointer to int to receive group index.
// pspSelectionResolution - A pointer to the COleDateTimeSpan
// object that contains the selection unit
// length. (i.e. 1 day, 1 Hour, ... 5 min)
// Remarks:
// Call this member function to fill provided COleDateTime
// objects with the values of the selection beginning, ending,
// and selection unit length.
// Returns:
// TRUE - If the selection is returned successfully.
// FALSE otherwise.
//-----------------------------------------------------------------------
virtual BOOL GetSelection(COleDateTime* pBegin = NULL, COleDateTime* pEnd = NULL,
BOOL* pbAllDayEvent = NULL, int* pnGroupIndex = NULL,
COleDateTimeSpan* pspSelectionResolution = NULL) const;
/////////////////////////////////////////////////////////////////////////
// day manipulations
//-----------------------------------------------------------------------
// Summary:
// This member function is used to show the specified day in the
// calendar day view.
// Parameters:
// date - A COleDateTime object that contains the date to show.
// bSelect - TRUE to select the specified day after showing,
// FALSE otherwise. TRUE is the default value.
// Remarks:
// Call this member function to show only the specified day in the
// calendar day view.
//-----------------------------------------------------------------------
virtual void ShowDay(const COleDateTime& date, BOOL bSelect = TRUE);
//-----------------------------------------------------------------------
// Summary:
// This member function is used to show the specified day interval
// in the calendar day view.
// Parameters:
// dtBegin - A COleDateTime object that contains the beginning
// interval date to show.
// dtEnd - A COleDateTime object that contains the ending interval
// date to show.
// Remarks:
// Call this member function to show all days from the dtBegin
// up to dtEnd inclusive.
//-----------------------------------------------------------------------
virtual void ShowDays(const COleDateTime& dtBegin, const COleDateTime& dtEnd);
//-----------------------------------------------------------------------
// Summary:
// This member function is used to show that working week
// in the calendar day view, which includes the specified day.
// Parameters:
// dtDay - A COleDateTime object that contains the date to show.
// Remarks:
// Call this member function to show working week
// which includes dtDay.
//-----------------------------------------------------------------------
virtual void ShowWorkingDays(const COleDateTime& dtDay);
//-----------------------------------------------------------------------
// Summary:
// This member function is used to add a specified date to the
// dates set showing in the current calendar day view.
// Parameters:
// date - A COleDateTime object that contains the date to display.
// Remarks:
// Call this member function to display a specific day in the
// calendar day view in addition to the days already visible.
//-----------------------------------------------------------------------
virtual void AddDay(const COleDateTime& date);
//-----------------------------------------------------------------------
// Summary:
// This member function is used to ensure that an event view item
// is visible.
// Parameters:
// pViewEvent - A CXTPCalendarViewEvent object. A pointer to the
// event view item being made visible.
// pViewGroup - A CXTPCalendarViewGroup object. A pointer to the
// group view being made visible.
// Remarks:
// If necessary, the function scrolls the day view so that the
// event view item is visible.
// Returns:
// Returns TRUE if the system scrolled the day view in the
// Calendar control to ensure that the specified event view item
// is visible. Otherwise, the return value is FALSE.
//-----------------------------------------------------------------------
virtual BOOL EnsureVisible(CXTPCalendarViewEvent* pViewEvent);
virtual BOOL EnsureVisibleH(CXTPCalendarViewEvent* pViewEvent); //<COMBINE EnsureVisible>
virtual BOOL EnsureVisibleH(CXTPCalendarViewGroup* pViewGroup); //<COMBINE EnsureVisible>
//-----------------------------------------------------------------------
// Summary:
// This member function is used to start view from the work day starting time.
// Remarks:
// Call this method after set new data provider because new data
// provider store other time scale resolution value.
//-----------------------------------------------------------------------
virtual void ScrollToWorkDayBegin();
//-----------------------------------------------------------------------
// Summary:
// This member function is used to determine whether resource group
// header should be visible.
// Remarks:
// This method returns FALSE when resource groups count is zero and
// there is only one schedule used.
// Returns:
// TRUE when visible; FALSE otherwise.
//-----------------------------------------------------------------------
virtual BOOL IsGroupHeaderVisible() const;
//-----------------------------------------------------------------------
// Summary:
// This member function is used to get main or additional time scale
// object.
// Parameters:
// nNumber - A time scale object number:
// 1 - main time scale,
// 2 - additional time scale.
// Remarks:
// By default number 1 (main time scale) is used.
// Returns:
// Pointer to the CXTPCalendarDayViewTimeScale object.
//-----------------------------------------------------------------------
virtual CXTPCalendarDayViewTimeScale* GetTimeScale(int nNumber = 1) const;
//-----------------------------------------------------------------------
// Summary:
// Call this member function to obtain the CXTPCalendarDayViewDay object
// by the day's date.
// Parameters:
// dtDay - A day date to find.
// Remarks:
// Returns NULL if no day with the specified date in the days collection.
// Returns:
// A pointer to a CXTPCalendarViewDay object.
// See Also: GetViewDayCount(), GetViewDay_, GetViewDay
//-----------------------------------------------------------------------
virtual CXTPCalendarDayViewDay* GetDay(COleDateTime dtDay);
//-----------------------------------------------------------------------
// Summary:
// This member function is used to scroll the view back a
// specified number of days.
// Parameters:
// nScrollDaysCount - An int that is used to specify the number
// of days to scroll.
// Remarks:
// Call this member function when you want to switch the
// number of days back from the current day.
// See Also: ScrollDaysToNext
//-----------------------------------------------------------------------
virtual void ScrollDaysToPrev(int nScrollDaysCount = 1);
//-----------------------------------------------------------------------
// Summary:
// This member function is used to scroll the view forward a
// specified number of days.
// Parameters:
// nScrollDaysCount - An int that is used to specify the number
// of days to scroll.
// Remarks:
// Call this member function to switch the number of days forward
// from the current date.
// See Also: ScrollDaysToPrev
//-----------------------------------------------------------------------
virtual void ScrollDaysToNext(int nScrollDaysCount = 1);
//-----------------------------------------------------------------------
// Summary:
// This member function is used to scroll the view forward a
// specified number of columns (schedules).
// Parameters:
// lColumn - columns # to show
//-----------------------------------------------------------------------
void ScrollToColumn(long lColumn);
protected:
//-----------------------------------------------------------------------
// Summary:
// This member function is used to stop vertical scrolling.
// Remarks:
// If there is a vertical scroll event in process, then calling
// this member function stops the vertical scrolling.
//-----------------------------------------------------------------------
virtual void StopVertEventScroll();
//-----------------------------------------------------------------------
// Summary:
// This member function is used to stop horizontal scrolling.
// Remarks:
// If there is a horizontal scroll event in process, then calling
// this member function stops the v scrolling.
//-----------------------------------------------------------------------
virtual void StopHorzEventScroll();
//-----------------------------------------------------------------------
// Summary:
// This member function is an utility function used by OnKeyDown
// It determines if we can scroll groups left if hscroll is disabled
//-----------------------------------------------------------------------
BOOL GetIsCanHScrollGroupsLeft(COleDateTime dtNewSelEnd, BOOL bVKShift);
//-----------------------------------------------------------------------
// Summary:
// This member function is an utility function used by OnKeyDown
// It determines if we can scroll groups right if hscroll is disabled
//-----------------------------------------------------------------------
BOOL GetIsCanHScrollGroupsRight(COleDateTime dtNewSelEnd, BOOL bVKShift);
// ----------------------------------------------------------------------
// Summary:
// This member function is used to change the mouse cursor.
// Parameters:
// bOutOfArea : TRUE means out (FALSE - inside) of drag area.
// Remarks:
// Call this member function to changes the mouse cursor depending on
// which drag mode is currently active. Note: The drag mode is
// contained in the XTPCalendarDraggingMode m_eDraggingMode member
// variable.
// ----------------------------------------------------------------------
virtual void SetMouseOutOfDragArea(BOOL bOutOfArea);
//-----------------------------------------------------------------------
// Summary:
// This member function is used to determine if the point is in
// the drag able rectangle.
// Parameters:
// pnt - A CPoint object that contains the point to test.
// pHitInfo - Pointer to the XTP_CALENDAR_HITTESTINFO structure,
// which helps to determine the client rectangle.
// Returns:
// TRUE if the point is out of the drag able rectangle, FALSE otherwise.
//-----------------------------------------------------------------------
virtual BOOL IsOutOfClientRect(CPoint pnt, XTP_CALENDAR_HITTESTINFO *pHitInfo);
//-----------------------------------------------------------------------
// Summary:
// This member function is used to determine the scroll direction.
// Parameters:
// pnt - Test mouse point.
// Remarks:
// This function returns an XTPCalendarDayViewScrollDirection enumeration which defines the
// scroll direction.
// Returns:
// xtpCalendarDayViewScrollUp/xtpCalendarDayViewScrollDown if scrolling up/down is needed.
// xtpCalendarDayViewScrollNotNeeded if scrolling is not needed.
//-----------------------------------------------------------------------
virtual XTPCalendarDayViewScrollDirection GetNeededScrollDirection(CPoint pnt) const;
//-----------------------------------------------------------------------
// Summary:
// This member function is used to vertically scroll an event
// in the current view.
// Parameters:
// bUp - A BOOL that contains the direction to scroll:
// TRUE if up.
// FALSE if down.
// Returns:
// TRUE, if scrolled successfully. FALSE otherwise.
//-----------------------------------------------------------------------
virtual BOOL VertEventScroll(BOOL bUp);
//-----------------------------------------------------------------------
// Summary:
// This member function is used to horizontally scroll an event
// in the current view.
// Parameters:
// bLeft - A BOOL that contains the direction to scroll:
// TRUE if left.
// FALSE if right.
// Returns:
// TRUE, if scrolled successfully. FALSE otherwise.
//-----------------------------------------------------------------------
virtual BOOL HorzEventScroll(BOOL bLeft);
//-----------------------------------------------------------------------
// Summary:
// This member function is used to return the minimum event
// duration so that the event is visible in the current view.
// Returns:
// A COleDateTimeSpan object that specifies the minimum duration
// of the event.
//-----------------------------------------------------------------------
virtual COleDateTimeSpan GetEventDurationMin() const;
//-----------------------------------------------------------------------
// Summary:
// This member function is used to select or un-select the provided
// day, including all of the day's events.
// Parameters:
// pDay - A pointer to a CXTPCalendarViewDay object.
// See Also: CXTPCalendarViewDay, SelectDay(COleDateTime dtSelDay, BOOL bSelect)
//-----------------------------------------------------------------------
virtual void SelectDay(CXTPCalendarViewDay* pDay);
//-----------------------------------------------------------------------
// Summary:
// Converts Time Zones from both timescales to the minutes shift
// of the second time scale in comparison with the first one.
// See Also: CXTPCalendarViewDay, SelectDay(COleDateTime dtSelDay, BOOL bSelect)
//-----------------------------------------------------------------------
virtual void AdjustScale2TimeZone();
//-----------------------------------------------------------------------
// Summary:
// This member function is used to scroll the content of a view.
// Parameters:
// nIndex : Position value.
// nPos_raw : Raw position value. (Not used at this time.)
//-----------------------------------------------------------------------
virtual void _ScrollV(int nIndex, int nPos_raw);
public:
COleDateTime GetDateTimeDay(const COleDateTime& dt) const;
COleDateTime GetDateTimeTime(const COleDateTime& dt) const;
private:
virtual void OnStartDragging(CPoint point, XTP_CALENDAR_HITTESTINFO* pHitTest);
virtual BOOL OnDragging(CPoint point, XTP_CALENDAR_HITTESTINFO* pHitTest);
virtual BOOL OnEndDragging(CPoint point, XTP_CALENDAR_HITTESTINFO* pHitInfo);
virtual void ClearDays();
virtual void _ScrollDays(int nScrollDaysCount, BOOL bPrev);
virtual void ProcessCellSelection(COleDateTime dtNewSelBegin, BOOL bFixSelEnd,
BOOL bAllDayEventSel, int nGroupIndex);
virtual void ProcessDaySelection(XTP_CALENDAR_HITTESTINFO* pInfo, UINT nFlags);
virtual CXTPCalendarViewEvent* FindEventToEditByTAB(COleDateTime dtMinStart,
BOOL bReverse,
CXTPCalendarEvent* pAfterEvent = NULL);
virtual COleDateTime GetNextTimeEditByTAB() const;
virtual void UpdateNextTimeEditByTAB(COleDateTime dtNext, BOOL bReverse,
BOOL bReset = FALSE);
virtual BOOL OnTimer(UINT_PTR uTimerID);
virtual void OnActivateView(BOOL bActivate, CXTPCalendarView* pActivateView,
CXTPCalendarView* pInactiveView);
void _AddDay(const COleDateTime& date);
int CalculateHeaderFormatAndHeight(CDC* pDC, int nCellWidth);
virtual CXTPCalendarData* _GetDataProviderByConnStr(LPCTSTR pcszConnStr, BOOL bCompareNoCase = TRUE);
public:
COleDateTime m_dtTimeScaleMin; //Time scale minimum value.
COleDateTime m_dtTimeScaleMax; //Time scale maximum value.
//BOOL m_bEcoMode; //flag to use on screen drawing instead of memory bitmap manipulation
//(which restricted by 64K - sometimes it is not enough fo very many schedules case -
//and use too much memory on low-end PC)
BOOL m_bDraftMode; //flag to set printout to print in B/W without Header and Footer
//to maximize main information space and simplify params set (default = FALSE)
BOOL m_bPrintRepeatHeaderFooterMode; //flag to set printout to print Header and Footer only on first page
//to maximize main information space (default = TRUE)
BOOL m_bDF_mode; // Last page print mode flag (FALSE - print last page same size as other,
// TRUE (default) - can be shorter then others)
BOOL m_bPrintFullScale; //print timescale range - if FALSE - print working hours range
int m_nDayViewPrintInterval;//interval to use in DayView Printing: 60 or 45 or 30 or 15
BOOL m_bEcoAllDayMode; // If True use short AllDay area height
BOOL m_bPreventDragAllDayEventInDayView; //default FALSE If True it will be impossible to Drag All Day Event In DayView
int m_nDayHeaderPeriod; //interval between in multi-scheduled mode Day Header for same date repeated -
//need for scrolling in very many - schedules case when one day can use few screens
int m_nCurPage; // for AllDay event printing control by CXTPCalendarControlView
BOOL m_bUseNewHitTestCode; //Tells whether to use new hit test code or not.
BOOL m_bShowLinks; //flag to show or hide 'virtual' view events
BOOL m_bHideLinkContainer; //flag to hide or show 'virtual' view events container column
BOOL m_bShowAllDayEventsOnly;
//{{AFX_CODEJOCK_PRIVATE
virtual void AdjustAllDayEvents();
CRect GetDayHeaderRectangle() const;
CRect GetAllDayEventsRectangle() const;
void SetIsHideAllDayEventsArea(BOOL bHide);
BOOL GetIsHideAllDayEventsArea() const;
virtual int GetAllDayEventsMaxCount() const;
virtual int GetTotalGroupsCount() const;
virtual int RecalcMinColumnWidth() const;
//}}AFX_CODEJOCK_PRIVATE
protected:
//{{AFX_CODEJOCK_PRIVATE
XTP_DAY_VIEW_LAYOUT& GetLayout();
virtual BOOL IsUseCellAlignedDraggingInTimeArea() const;
//}}AFX_CODEJOCK_PRIVATE
private:
XTP_DAY_VIEW_LAYOUT m_LayoutX; // Layout data.
CXTPCalendarDayViewTimeScale* m_pTimeScaleHeader; // Pointer to the main time scale object.
CXTPCalendarDayViewTimeScale* m_pTimeScaleHeader2; // Pointer to the alternative time scale object.
int m_nAllDayEventsCountMin_WhenDrag;
COleDateTimeSpan m_spDraggingStartOffset_Time;
COleDateTime m_dtSelectionStart;
DWORD m_dwScrollingEventTimerID;
DWORD m_dwScrollingEventTimerHorID;
BOOL m_bScrollingEventUp;
BOOL m_bScrollingEventLeft;
BOOL m_bMouseOutOfDragArea;
COleDateTime m_dtDraggingStartPoint;
CPoint m_ptLastMousePos;
DWORD m_dwRedrawNowLineTimerID;
COleDateTime m_dtLastRedrawTime;
BOOL m_bHideAllDayEventsArea;
protected:
int m_nScrollOffsetX; // Stores horizontal left offset of visible day view part.
int m_nMinColumnWidth; // 0 means disabled;
// -1 use some default width for multiresources only;
// -N use for multiresources only (internally converted to +N);
// +N used always (in single and multi resources mode).
//-----------------------------------------------------------------------
// Summary:
// This member function is used to get time scales area width.
// Returns:
// Time scales area width in pixels.
//-----------------------------------------------------------------------
int _GetTimeScaleWith() const;
//-----------------------------------------------------------------------
// Summary:
// This member function is used to get horizontal scroll area rect.
// Returns:
// Horizontal scroll area rect.
//-----------------------------------------------------------------------
CRect _GetScrollRectClient() const;
//-----------------------------------------------------------------------
// Summary:
// This member function is used to ensure that an event view item
// is visible.
// Parameters:
// pViewEvent - A CXTPCalendarViewEvent object. A pointer to the
// event view item being made visible.
// Remarks:
// If necessary, the function scrolls the day view so that the
// event view item is visible.
// Returns:
// Returns TRUE if the system scrolled the day view in the
// Calendar control to ensure that the specified event view item
// is visible. Otherwise, the return value is FALSE.
//-----------------------------------------------------------------------
BOOL _EnsureVisibleH(CXTPCalendarViewEvent* pViewEvent);
//-----------------------------------------------------------------------
// Summary:
// This member function is used to ensure that an event view item
// is visible.
// Parameters:
// pViewEvent - A CXTPCalendarViewEvent object. A pointer to the
// event view item being made visible.
// Remarks:
// If necessary, the function scrolls the day view so that the
// event view item is visible.
// Returns:
// Returns TRUE if the system scrolled the day view in the
// Calendar control to ensure that the specified event view item
// is visible. Otherwise, the return value is FALSE.
//-----------------------------------------------------------------------
BOOL _EnsureVisibleV(CXTPCalendarViewEvent* pViewEvent);
//-----------------------------------------------------------------------
// Summary:
// This member function is used to ensure that an selection is visible.
// Remarks:
// If necessary, the function scrolls the day view horizontally so that
// the selection is visible.
// Returns:
// Returns TRUE if the system scrolled the day view, otherwise FALSE.
//-----------------------------------------------------------------------
BOOL _EnsureVisibleSelectionH();
};
//================================================================
AFX_INLINE CRect CXTPCalendarDayView::GetDayHeaderRectangle() const {
return m_LayoutX.m_rcDayHeader;
}
AFX_INLINE CRect CXTPCalendarDayView::GetAllDayEventsRectangle() const {
return m_LayoutX.m_rcAllDayEvents;
}
AFX_INLINE BOOL CXTPCalendarDayView::GetIsHideAllDayEventsArea() const {
return m_bHideAllDayEventsArea;
}
AFX_INLINE int CXTPCalendarDayView::GetRowCount() const {
return m_LayoutX.m_nRowCount;
}
AFX_INLINE int CXTPCalendarDayView::GetVisibleRowCount() const {
return m_LayoutX.m_nVisibleRowCount;
}
AFX_INLINE int CXTPCalendarDayView::GetTopRow() const {
return m_LayoutX.m_nTopRow;
}
AFX_INLINE void CXTPCalendarDayView::ProcessDaySelection(XTP_CALENDAR_HITTESTINFO* /*pInfo*/, UINT /*nFlags*/) {
UnselectAllEvents();
}
AFX_INLINE void CXTPCalendarDayView::SelectDay(CXTPCalendarViewDay* /*pDay*/) {
// Do nothing for day view.
}
AFX_INLINE CXTPCalendarDayViewTimeScale* CXTPCalendarDayView::GetTimeScale(int nNumber) const {
ASSERT(nNumber == 1 || nNumber == 2);
return nNumber <= 1 ? m_pTimeScaleHeader : m_pTimeScaleHeader2;
}
AFX_INLINE XTP_DAY_VIEW_LAYOUT& CXTPCalendarDayView::GetLayout() {
return m_LayoutX;
}
AFX_INLINE int CXTPCalendarDayView::GetMinColumnWidth() const {
return m_nMinColumnWidth;
}
AFX_INLINE void CXTPCalendarDayView::SetMinColumnWidth(int nWidth) {
m_nMinColumnWidth = nWidth;
}
#endif // !defined(_XTPCALENDARDAYVIEW_H__)