Add a window method to resize spinners

This commit is contained in:
Michael Bernardi 2023-07-03 00:37:04 +02:00
parent a7881a5046
commit 1159c9d0bc
4 changed files with 26 additions and 12 deletions

View File

@ -1909,22 +1909,13 @@ public:
widgets[WIDX_SPEED_SETTING_SPINNER].text = STR_RIDE_CONSTRUCTION_BRAKE_SPEED_VELOCITY;
widgets[WIDX_SPEED_SETTING_SPINNER].type = WindowWidgetType::Spinner;
widgets[WIDX_SPEED_SETTING_SPINNER].left = 12;
widgets[WIDX_SPEED_SETTING_SPINNER].right = 96;
widgets[WIDX_SPEED_SETTING_SPINNER].top = 138;
widgets[WIDX_SPEED_SETTING_SPINNER].bottom = 149;
widgets[WIDX_SPEED_SETTING_SPINNER_UP].type = WindowWidgetType::Button;
widgets[WIDX_SPEED_SETTING_SPINNER_UP].text = STR_NUMERIC_UP;
widgets[WIDX_SPEED_SETTING_SPINNER_UP].left = 84;
widgets[WIDX_SPEED_SETTING_SPINNER_UP].right = 95;
widgets[WIDX_SPEED_SETTING_SPINNER_UP].top = 139;
widgets[WIDX_SPEED_SETTING_SPINNER_UP].bottom = 148;
widgets[WIDX_SPEED_SETTING_SPINNER_DOWN].type = WindowWidgetType::Button;
widgets[WIDX_SPEED_SETTING_SPINNER_DOWN].text = STR_NUMERIC_DOWN;
widgets[WIDX_SPEED_SETTING_SPINNER_DOWN].left = 72;
widgets[WIDX_SPEED_SETTING_SPINNER_DOWN].right = 83;
widgets[WIDX_SPEED_SETTING_SPINNER_DOWN].top = 139;
widgets[WIDX_SPEED_SETTING_SPINNER_DOWN].bottom = 148;
ResizeSpinner(WIDX_SPEED_SETTING_SPINNER, { 12, 138 }, { 85, SPINNER_HEIGHT });
hold_down_widgets |= (1uLL << WIDX_SPEED_SETTING_SPINNER_UP) | (1uLL << WIDX_SPEED_SETTING_SPINNER_DOWN);
}

View File

@ -2148,3 +2148,23 @@ void WindowBase::ResizeFrameWithPage()
widgets[3].right = width - 1;
widgets[3].bottom = height - 1;
}
void WindowBase::ResizeSpinner(WidgetIndex widgetIndex, const ScreenCoordsXY& origin, const ScreenSize& size)
{
auto right = origin.x + size.width - 1;
auto bottom = origin.y + size.height - 1;
widgets[widgetIndex].left = origin.x;
widgets[widgetIndex].top = origin.y;
widgets[widgetIndex].right = right;
widgets[widgetIndex].bottom = bottom;
widgets[widgetIndex + 1].left = right - size.height;
widgets[widgetIndex + 1].top = origin.y + 1;
widgets[widgetIndex + 1].right = right - 1;
widgets[widgetIndex + 1].bottom = bottom - 1;
widgets[widgetIndex + 2].left = right - size.height * 2;
widgets[widgetIndex + 2].top = origin.y + 1;
widgets[widgetIndex + 2].right = right - size.height - 1;
widgets[widgetIndex + 2].bottom = bottom - 1;
}

View File

@ -44,6 +44,7 @@ constexpr uint8_t CloseButtonWidth = 10;
#define LIST_ROW_HEIGHT 12
#define TABLE_CELL_HEIGHT 12
#define BUTTON_FACE_HEIGHT 12
#define SPINNER_HEIGHT 12
#define TEXT_INPUT_SIZE 1024
#define TOP_TOOLBAR_HEIGHT 27

View File

@ -175,6 +175,8 @@ struct WindowBase
void ResizeFrame();
void ResizeFrameWithPage();
void ResizeSpinner(WidgetIndex widgetIndex, const ScreenCoordsXY& origin, const ScreenSize& size);
};
#ifdef __WARN_SUGGEST_FINAL_METHODS__