// 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 Day view. // 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 { //{{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 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); // //----------------------------------------------------------------------- // 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; // //----------------------------------------------------------------------- // 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); // //----------------------------------------------------------------------- // 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); // virtual BOOL EnsureVisibleH(CXTPCalendarViewGroup* pViewGroup); // //----------------------------------------------------------------------- // 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__)