void CBCGPPlannerViewMonth::SetDate (const COleDateTime& date) { COleDateTime dt (date.GetYear (), date.GetMonth (), date.GetDay (), 0, 0, 0); if (m_DateEnd < dt || dt < m_DateStart) { m_DateStart = GetFirstWeekDay2 (dt, CBCGPPlannerManagerCtrl::GetFirstDayOfWeek () + 1); m_DateEnd = m_DateStart + COleDateTimeSpan (m_nDuration - 1, 23, 59, 59); } if (m_DateEnd < dt || dt < m_DateStart) { dt = m_DateStart; } CBCGPPlannerView::SetDate (dt); }
void CBCGPPlannerPrintMonth::CalculateDates (const COleDateTime& date) { BOOL bNeedUpdate = TRUE; if (m_DateStart != COleDateTime () && m_DateEnd != COleDateTime ()) { bNeedUpdate = ((m_DateEnd - m_DateStart).GetTotalDays () + 1) < 14; } if (bNeedUpdate) { m_DateStart = GetFirstWeekDay2 (COleDateTime (date.GetYear (), date.GetMonth (), 1, 0, 0, 0), CBCGPPlannerManagerCtrl::GetFirstDayOfWeek () + 1); m_DateEnd = m_DateStart + COleDateTimeSpan (34, 23, 59, 59); } }
void CBCGPPlannerViewMonth::SetCompressWeekend (BOOL bCompress) { if (m_bCompressWeekend != bCompress) { m_bCompressWeekend = bCompress; if (CBCGPPlannerManagerCtrl::GetFirstDayOfWeek () != 1) { m_DateStart = GetFirstWeekDay2 (m_DateStart, CBCGPPlannerManagerCtrl::GetFirstDayOfWeek () + 1); m_DateEnd = m_DateStart + COleDateTimeSpan (m_nDuration - 1, 23, 59, 59); SetDate (m_Date); } else { CBCGPPlannerView::AdjustLayout (); } } }
void CBCGPPlannerViewMonth::SetDateInterval (const COleDateTime& date1, const COleDateTime& date2) { ASSERT (date1 <= date2); COleDateTimeSpan duration (date2 - date1); m_nDuration = ((int)(duration.GetTotalDays () / 7.0)) * 7; if (m_nDuration < duration.GetTotalDays ()) { m_nDuration += 7; } if (m_nDuration < 14) { m_nDuration = 14; } else if (m_nDuration > 42) { m_nDuration = 42; } COleDateTime _date1 (date1); if (IsCompressWeekend () && CBCGPPlannerManagerCtrl::GetFirstDayOfWeek () == 0) { _date1 += COleDateTimeSpan (1, 0, 0, 0); } m_DateStart = GetFirstWeekDay2 (_date1, CBCGPPlannerManagerCtrl::GetFirstDayOfWeek () + 1); m_DateEnd = m_DateStart + COleDateTimeSpan (m_nDuration - 1, 23, 59, 59); if (m_DateEnd < m_Date || m_Date < m_DateStart) { m_Date = m_DateStart; } SetDate (m_Date); }
void CBCGPPlannerPrintMonth::OnDrawHeader (CDC* pDC, const CRect& rectHeader) { ASSERT_VALID (pDC); const int dxColumn = m_ViewRects [0].Width (); CRect rectDayCaption (rectHeader); DrawHeader (pDC, rectDayCaption, dxColumn); rectDayCaption.right = rectDayCaption.left + dxColumn; COleDateTime day ( GetFirstWeekDay2 (m_Date, CBCGPPlannerManagerCtrl::GetFirstDayOfWeek () + 1) ); const int nEnd = m_bCompressWeekend ? 6 : 7; CStringArray sa; sa.SetSize (nEnd); int iColumn = 0; for (iColumn = 0; iColumn < nEnd; iColumn++) { CString strDate; if (IsCompressWeekend () && day.GetDayOfWeek () == 7) { for (int i = 0; i < 2; i++) { CString strTemp; strTemp.GetBuffer (_MAX_PATH); SYSTEMTIME st; day.GetAsSystemTime (st); ::GetDateFormat (LOCALE_USER_DEFAULT, 0, &st, _T("ddd"), (LPTSTR)(LPCTSTR)strTemp, _MAX_PATH); strTemp.ReleaseBuffer (); strDate += strTemp; if (i == 0) { strDate += _T("/"); } day += COleDateTimeSpan (1, 0, 0, 0); } } else { strDate.GetBuffer (_MAX_PATH); SYSTEMTIME st; day.GetAsSystemTime (st); ::GetDateFormat (LOCALE_USER_DEFAULT, 0, &st, m_strCaptionFormat, (LPTSTR)(LPCTSTR)strDate, _MAX_PATH); strDate.ReleaseBuffer (); day += COleDateTimeSpan (1, 0, 0, 0); } sa.SetAt (iColumn, strDate); } for (iColumn = 0; iColumn < nEnd; iColumn++) { DrawCaption (pDC, rectDayCaption, sa[iColumn], TRUE, TRUE, m_brGray); rectDayCaption.OffsetRect (dxColumn + m_OnePoint.cx, 0); } }
COleDateTime CBCGPPlannerViewMonth::CalculateDateStart (const COleDateTime& date) const { return GetFirstWeekDay2 (COleDateTime (date.GetYear (), date.GetMonth (), 1, 0, 0, 0), CBCGPPlannerManagerCtrl::GetFirstDayOfWeek () + 1); }
BOOL CBCGPPlannerViewMonth::OnKeyDown(UINT nChar, UINT /*nRepCnt*/, UINT /*nFlags*/) { if (m_pCapturedAppointment != NULL) { GetPlanner ()->SendMessage (WM_CANCELMODE, 0, 0); return TRUE; } BOOL isShiftPressed = (0x8000 & GetKeyState(VK_SHIFT)) != 0; BOOL bHandled = FALSE; if (nChar == VK_PRIOR || nChar == VK_NEXT) // Page Up, Page Down { OnVScroll (nChar == VK_PRIOR ? SB_PAGEUP : SB_PAGEDOWN, 0, NULL); SetSelection (m_Date, m_Date); bHandled = TRUE; } else if (nChar == VK_HOME || nChar == VK_END) { COleDateTime date ( GetFirstWeekDay2 (m_Date, CBCGPPlannerManagerCtrl::GetFirstDayOfWeek () + 1) ); if (nChar == VK_END) { date += COleDateTimeSpan (6, 0, 0, 0); } if (!isShiftPressed) { m_Date = date; } else { if (nChar == VK_HOME) { COleDateTime oldDate (m_Date); m_Date = date; date = oldDate; } else { m_Date = m_Selection[1]; } } SetSelection (m_Date, date); bHandled = TRUE; } else if (nChar == VK_UP || nChar == VK_DOWN || nChar == VK_LEFT || nChar == VK_RIGHT) { COleDateTime date (m_Selection [1]); COleDateTimeSpan span (1, 0, 0 ,0); if (nChar == VK_LEFT) { date -= span; } else if (nChar == VK_RIGHT) { date += span; } else { span = COleDateTimeSpan (7, 0, 0 ,0); if (nChar == VK_UP) { date -= span; } else if (nChar == VK_DOWN) { date += span; } } BOOL bScroll = FALSE; if (date < m_DateStart) { OnVScroll (SB_LINEUP, 0, NULL); bScroll = TRUE; } else if (date >= (m_DateStart + COleDateTimeSpan (GetViewDuration (), 0, 0, 0))) { OnVScroll (SB_LINEDOWN, 0, NULL); bScroll = TRUE; } if (!isShiftPressed || bScroll) { m_Date = date; SetSelection (m_Date, m_Date); } else { SetSelection (m_Selection [0], date); if (date <= m_Date) { m_Date = date; } } bHandled = TRUE; } return bHandled; }