{
public:
const DateTime& GetDate(void) const;
+ int GetViewHeight(void) const;
result Initialize(const Rectangle& bounds, const DateTime& date, const EventListPresentationModel& pm);
void SetDate(const DateTime& date);
void SetDateFocusEventListener(IDateFocusEventListener& listener);
return __date;
}
+int
+MonthCalendarPanel::GetViewHeight(void) const
+{
+ int maxDay;
+ DateTime::GetDaysInMonth(__date.GetYear(), __date.GetMonth(), maxDay);
+ return Y_DAY + ((maxDay + __startDayColumn - 1) / MONTH_CALENDAR_WEEKDAY_COUNT + 1) * H_DAY;
+}
+
result
MonthCalendarPanel::Initialize(const Rectangle& bounds, const DateTime& date, const EventListPresentationModel& pm)
{
__startDayColumn += MONTH_CALENDAR_WEEKDAY_COUNT;
}
- int maxDay;
- DateTime::GetDaysInMonth(__date.GetYear(), __date.GetMonth(), maxDay);
- int height = Y_DAY + ((maxDay + __startDayColumn - 1) / MONTH_CALENDAR_WEEKDAY_COUNT + 1) * H_DAY;
- return Construct(Rectangle(bounds.x, bounds.y, bounds.width, height));
+ return Construct(bounds);
}
void
{
__startDayColumn += MONTH_CALENDAR_WEEKDAY_COUNT;
}
-
- int maxDay;
- DateTime::GetDaysInMonth(date.GetYear(), date.GetMonth(), maxDay);
- int maxRow = (maxDay + __startDayColumn - 1) / MONTH_CALENDAR_WEEKDAY_COUNT + 1;
- int height = __pDayCalendars[maxRow - 1][0]->GetY() + H_DAY;
- if (GetHeight() != height)
- {
- SetSize(GetWidth(), height);
- }
}
else
{
void
MonthCalendarPanel::UpdateEvent(void)
{
- int maxDay;
- DateTime::GetDaysInMonth(__date.GetYear(), __date.GetMonth(), maxDay);
- int maxRow = (maxDay + __startDayColumn - 1) / MONTH_CALENDAR_WEEKDAY_COUNT + 1;
- for (int row = 0; row < maxRow; ++row)
+ for (int row = 0; row < MONTH_CALENDAR_ROW_COUNT; ++row)
{
for (int col = 0; col < MONTH_CALENDAR_WEEKDAY_COUNT; ++col)
{
DateTime date = __pDayCalendars[0][__startDayColumn]->GetDate();
if (date.GetYear() != __date.GetYear() || date.GetMonth() != __date.GetMonth() || date.GetDay() != 1)
{
- int maxDay;
- DateTime::GetDaysInMonth(__date.GetYear(), __date.GetMonth(), maxDay);
- int maxRow = (maxDay + __startDayColumn - 1) / MONTH_CALENDAR_WEEKDAY_COUNT + 1;
- int height = __pDayCalendars[maxRow - 1][0]->GetY() + H_DAY;
- if (GetHeight() != height)
- {
- SetSize(GetWidth(), height);
- Invalidate(false);
- }
-
date = __date;
date.AddDays(1 - __startDayColumn - date.GetDay());
- for (int row = 0; row < maxRow; ++row)
+ for (int row = 0; row < MONTH_CALENDAR_ROW_COUNT; ++row)
{
for (int col = 0; col < MONTH_CALENDAR_WEEKDAY_COUNT; ++col)
{
result
MonthCalendarPanel::OnInitializing(void)
{
- // Set background
-// Bitmap* pBitmapBackground = ResourceManager::GetBitmapN(IDB_MONTH_VIEW_CALENDAR_BG);
-// if (pBitmapBackground != null)
-// {
-// Label* pLabel = new (std::nothrow) Label();
-// pLabel->Construct(Rectangle(0, 0, GetWidth(), GetHeight()), L"");
-// pLabel->SetBackgroundBitmap(*pBitmapBackground);
-// AddControl(*pLabel);
-// delete pBitmapBackground;
-// }
-
// Create week label
for (int week = 0; week < MONTH_CALENDAR_WEEKDAY_COUNT; ++week)
{
}
}
+
MonthPanel::MonthPanel(void)
: __pPm(null)
, __selectedIndex(0)
__pPanningAnimationManager->AddView(*pPanel, VIEW_SCROLL_EFFECT_CURRENT);
pPanel->SetDateFocusEventListener(*this);
pPanel->SetFocusEnabled(true);
+ pPanel->SetSize(pPanel->GetWidth(), pPanel->GetViewHeight());
__pPanelMonthCalendar[VIEW_SCROLL_EFFECT_CURRENT] = pPanel;
__pContextItem = new (std::nothrow) ListContextItem();
void
MonthPanel::DrawCalendar(void)
{
- DateTime current = static_cast<MonthCalendarPanel*>(__pPanelMonthCalendar[VIEW_SCROLL_EFFECT_CURRENT])->GetDate();
- static_cast<MonthCalendarPanel*>(__pPanelMonthCalendar[VIEW_SCROLL_EFFECT_CURRENT])->SetDate(__pPm->GetCurrentDate());
+ MonthCalendarPanel* pCurrent = static_cast<MonthCalendarPanel*>(__pPanelMonthCalendar[VIEW_SCROLL_EFFECT_CURRENT]);
+ DateTime current = pCurrent->GetDate();
+ pCurrent->SetDate(__pPm->GetCurrentDate());
+ pCurrent->SetSize(pCurrent->GetWidth(), pCurrent->GetViewHeight());
- int height = GetHeight() - Y_CALENDAR - __pPanelMonthCalendar[VIEW_SCROLL_EFFECT_CURRENT]->GetHeight();
+ int height = GetHeight() - Y_CALENDAR - pCurrent->GetHeight();
if (__pListViewEvent->GetHeight() != height)
{
__pListViewEvent->SetBounds(0, GetHeight() - height, GetWidth(), height);
nextDate.SetValue(minDate.GetYear(), minDate.GetMonth(), nextDate.GetDay(), nextDate.GetHour(), nextDate.GetMinute());
}
pNextPanel->SetDate(nextDate);
+ pNextPanel->SetSize(pNextPanel->GetWidth(), pCurrent->GetHeight());
}
MonthCalendarPanel* pPrevPanel = static_cast<MonthCalendarPanel*>(__pPanelMonthCalendar[VIEW_SCROLL_EFFECT_PREVIEW]);
prevDate.SetValue(maxDate.GetYear(), maxDate.GetMonth(), prevDate.GetDay(), prevDate.GetHour(), prevDate.GetMinute());
}
pPrevPanel->SetDate(prevDate);
+ pPrevPanel->SetSize(pPrevPanel->GetWidth(), pCurrent->GetHeight());
}
}