|
@@ -106,97 +106,97 @@ struct SetDateWindow : Window {
|
|
|
ShowDropDownList(this, list, selected, widget);
|
|
|
}
|
|
|
|
|
|
virtual void UpdateWidgetSize(int widget, Dimension *size, const Dimension &padding, Dimension *fill, Dimension *resize)
|
|
|
{
|
|
|
Dimension d = {0, 0};
|
|
|
switch (widget) {
|
|
|
default: return;
|
|
|
|
|
|
case SDW_DAY:
|
|
|
for (uint i = 0; i < 31; i++) {
|
|
|
d = maxdim(d, GetStringBoundingBox(STR_ORDINAL_NUMBER_1ST + i));
|
|
|
}
|
|
|
break;
|
|
|
|
|
|
case SDW_MONTH:
|
|
|
for (uint i = 0; i < 12; i++) {
|
|
|
d = maxdim(d, GetStringBoundingBox(STR_MONTH_JAN + i));
|
|
|
}
|
|
|
break;
|
|
|
|
|
|
case SDW_YEAR:
|
|
|
for (Year i = this->min_year; i <= this->max_year; i++) {
|
|
|
SetDParam(0, i);
|
|
|
d = maxdim(d, GetStringBoundingBox(STR_JUST_INT));
|
|
|
}
|
|
|
break;
|
|
|
}
|
|
|
|
|
|
d.width += padding.width;
|
|
|
d.height += padding.height;
|
|
|
*size = d;
|
|
|
}
|
|
|
|
|
|
virtual void SetStringParameters(int widget) const
|
|
|
{
|
|
|
switch (widget) {
|
|
|
case SDW_DAY: SetDParam(0, this->date.day - 1 + STR_ORDINAL_NUMBER_1ST); break;
|
|
|
case SDW_MONTH: SetDParam(0, this->date.month + STR_MONTH_JAN); break;
|
|
|
case SDW_YEAR: SetDParam(0, this->date.year); break;
|
|
|
}
|
|
|
}
|
|
|
|
|
|
virtual void OnPaint()
|
|
|
{
|
|
|
this->DrawWidgets();
|
|
|
}
|
|
|
|
|
|
virtual void OnClick(Point pt, int widget)
|
|
|
virtual void OnClick(Point pt, int widget, int click_count)
|
|
|
{
|
|
|
switch (widget) {
|
|
|
case SDW_DAY:
|
|
|
case SDW_MONTH:
|
|
|
case SDW_YEAR:
|
|
|
ShowDateDropDown(widget);
|
|
|
break;
|
|
|
|
|
|
case SDW_SET_DATE:
|
|
|
if (this->callback != NULL) this->callback(this->parent, ConvertYMDToDate(this->date.year, this->date.month, this->date.day));
|
|
|
delete this;
|
|
|
break;
|
|
|
}
|
|
|
}
|
|
|
|
|
|
virtual void OnDropdownSelect(int widget, int index)
|
|
|
{
|
|
|
switch (widget) {
|
|
|
case SDW_DAY:
|
|
|
this->date.day = index;
|
|
|
break;
|
|
|
|
|
|
case SDW_MONTH:
|
|
|
this->date.month = index;
|
|
|
break;
|
|
|
|
|
|
case SDW_YEAR:
|
|
|
this->date.year = index;
|
|
|
break;
|
|
|
}
|
|
|
this->SetDirty();
|
|
|
}
|
|
|
};
|
|
|
|
|
|
static const NWidgetPart _nested_set_date_widgets[] = {
|
|
|
NWidget(NWID_HORIZONTAL),
|
|
|
NWidget(WWT_CLOSEBOX, COLOUR_BROWN),
|
|
|
NWidget(WWT_CAPTION, COLOUR_BROWN), SetDataTip(STR_DATE_CAPTION, STR_TOOLTIP_WINDOW_TITLE_DRAG_THIS),
|
|
|
EndContainer(),
|
|
|
NWidget(WWT_PANEL, COLOUR_BROWN),
|
|
|
NWidget(NWID_VERTICAL), SetPIP(6, 6, 6),
|
|
|
NWidget(NWID_HORIZONTAL, NC_EQUALSIZE), SetPIP(6, 6, 6),
|
|
|
NWidget(WWT_DROPDOWN, COLOUR_ORANGE, SDW_DAY), SetFill(1, 0), SetDataTip(STR_JUST_STRING, STR_DATE_DAY_TOOLTIP),
|
|
|
NWidget(WWT_DROPDOWN, COLOUR_ORANGE, SDW_MONTH), SetFill(1, 0), SetDataTip(STR_JUST_STRING, STR_DATE_MONTH_TOOLTIP),
|
|
|
NWidget(WWT_DROPDOWN, COLOUR_ORANGE, SDW_YEAR), SetFill(1, 0), SetDataTip(STR_JUST_INT, STR_DATE_YEAR_TOOLTIP),
|
|
|
EndContainer(),
|
|
|
NWidget(NWID_HORIZONTAL),
|
|
|
NWidget(NWID_SPACER), SetFill(1, 0),
|