void CXTPCalendarWeekViewGroup::FillHitTestEx(XTP_CALENDAR_HITTESTINFO_WEEK_VIEW* pHitTest) { ASSERT(pHitTest && GetViewDay()); if (pHitTest && GetViewDay()) { GetViewDay()->FillHitTestEx(pHitTest); pHitTest->pViewGroup = this; } }
void CXTPCalendarWeekView::AdjustLayout(CDC* pDC, const CRect& rcView, BOOL bCallPostAdjustLayout) { if (!GetPaintManager() || !GetPaintManager()->GetWeekViewPart() || !GetPaintManager()->GetWeekViewEventPart() || !pDC) { ASSERT(FALSE); return; } TBase::AdjustLayout(pDC, rcView, FALSE); AdjustFirstDayOfWeek(); CXTPCalendarViewPart* pWVPart = GetPaintManager()->GetWeekViewPart(); m_LayoutX.m_nDayHeaderHeight = pWVPart->GetTextExtent(pDC, _T("A")).cy + 7; m_Layout.m_nRowHeight = GetPaintManager()->GetWeekViewEventPart()->GetTextExtent(pDC, _T("(")).cy + 6; // Adjust Week's Grid CRect rcView2 = rcView; rcView2.DeflateRect(-1, -1, -1, -1); int nRows = 6/m_LayoutX.m_nGridColumns; ASSERT(6 % m_LayoutX.m_nGridColumns == 0); m_LayoutX.m_nDayWidth = rcView2.Width() / m_LayoutX.m_nGridColumns; m_LayoutX.m_nDayHeidht = rcView2.Height() / nRows; CalculateHeaderFormat(pDC, m_LayoutX.m_nDayWidth, &pWVPart->GetTextFont()); int nDayIndex = 0; CRect rc(0, 0, 0, 0); for (int nDayCol = 0; nDayCol < m_LayoutX.m_nGridColumns; nDayCol++) { for (int nDayRow = 0; nDayRow < nRows; nDayRow++) { CXTPCalendarWeekViewDay* pDay = GetViewDay(nDayIndex); ASSERT(pDay); if (!pDay) { continue; } COleDateTime dtDayDate = GetViewDayDate(nDayIndex); rc.SetRect( rcView2.left + m_LayoutX.m_nDayWidth * nDayCol, rcView2.top + m_LayoutX.m_nDayHeidht* nDayRow, rcView2.left + m_LayoutX.m_nDayWidth + m_LayoutX.m_nDayWidth * nDayCol, rcView2.top + m_LayoutX.m_nDayHeidht + m_LayoutX.m_nDayHeidht * nDayRow); int nWday = dtDayDate.GetDayOfWeek(); //Allow Sunday as 1st day of week //ASSERT(nWday != 1); //if (nWday == 7) //Wrong code - this code give Sat and Sun in half-height - ignored working days assignment - //e.g. Wed and Thu as free days! //if (nWday == m_nFirstDayOfWeekIndex + 5) if (nWday == 1 + (m_nFirstDayOfWeekIndex + 4) % 7) { CRect rc2 = rc; rc2.bottom = rc.top + rc.Height()/2; pDay->AdjustLayout(pDC, rc2); nDayIndex++; pDay = GetViewDay(nDayIndex); rc.top = rc2.bottom; } ASSERT(pDay); if (pDay) { pDay->AdjustLayout(pDC, rc); } nDayIndex++; } } //--------------------------------------------------------------------------- if (bCallPostAdjustLayout) { OnPostAdjustLayout(); } }