cleaned up widget settings

This commit is contained in:
Raphael Coeffic
2021-04-05 09:46:02 +02:00
parent 0ac2a814a1
commit 27410fe20a
3 changed files with 26 additions and 16 deletions
+5 -12
View File
@@ -39,7 +39,7 @@ void ScreenAddPage::build(FormWindow * window)
{
rect_t buttonRect = {LCD_W / 2 - 100, (window->height() - 24) / 2, 200, 24};
auto button = new TextButton(window, buttonRect, STR_ADD_MAIN_VIEW);
button->setPressHandler([=]() {
button->setPressHandler([=]() -> uint8_t {
auto& screen = customScreens[pageIndex];
auto& screenData = g_model.screenData[pageIndex];
@@ -157,7 +157,7 @@ class SetupWidgetsPageSlot: public Button
slotIndex(slotIndex)
{
widget = screen->getWidget(slotIndex);
setPressHandler([=](){
setPressHandler([=]() -> uint8_t {
Menu * menu = new Menu(this);
menu->addLine(TR_SELECT_WIDGET, [=]() {
Menu * menu = new Menu(this);
@@ -165,24 +165,17 @@ class SetupWidgetsPageSlot: public Button
menu->addLine(factory->getName(), [=]() {
if (widget) widget->deleteLater();
widget = screen->createWidget(slotIndex, factory);
return 0;
});
}
return 0;
});
if (widget) {
menu->addLine(TR_WIDGET_SETTINGS, [=]() {
new WidgetSettings(this, widget, [=]() {
TRACE("WidgetSettings confirmed");
deleteLater();
return;
});
new WidgetSettings(this, widget);
});
menu->addLine(STR_REMOVE_WIDGET, [=]() {
widget->deleteLater();
widget = nullptr;
return 0;
});
}
return 0;
@@ -282,7 +275,7 @@ void ScreenSetupPage::build(FormWindow * window)
// Setup widgets button...
setupWidgetsButton = new TextButton(window, grid.getFieldSlot(), STR_SETUP_WIDGETS);
setupWidgetsButton->setPressHandler([=]() {
setupWidgetsButton->setPressHandler([=]() -> uint8_t {
new SetupWidgetsPage(screen);
return 0;
});
@@ -325,7 +318,7 @@ void ScreenSetupPage::updateLayoutOptions()
//if (pageIndex > 0 || customScreens[1]) {
auto button = new TextButton(optionsWindow, grid.getFieldSlot(), STR_REMOVE_SCREEN);
button->setPressHandler([=]() {
button->setPressHandler([=]() -> uint8_t {
// if (pageIndex < MAX_CUSTOM_SCREENS - 1) {
// memmove(&g_model.screenData[pageIndex], &g_model.screenData[pageIndex + 1], sizeof(CustomScreenData) * (MAX_CUSTOM_SCREENS - pageIndex - 1));
// }
+16 -3
View File
@@ -28,10 +28,11 @@ static const rect_t widgetSettingsDialogRect = {
LCD_H - 2 * LCD_H / 4 // height
};
WidgetSettings::WidgetSettings(Window * parent, Widget * widget, std::function<void(void)> confirmHandler) :
Dialog(parent, TR_WIDGET_SETTINGS, widgetSettingsDialogRect),
confirmHandler(std::move(confirmHandler))
WidgetSettings::WidgetSettings(Window * parent, Widget * widget) :
Dialog(parent, TR_WIDGET_SETTINGS, widgetSettingsDialogRect)
{
setCloseWhenClickOutside(true);
auto form = &content->form;
FormGridLayout grid(content->form.width());
grid.setLabelWidth(width() / 5);
@@ -134,3 +135,15 @@ WidgetSettings::WidgetSettings(Window * parent, Widget * widget, std::function<v
grid.nextLine();
}
}
#if defined(HARDWARE_KEYS)
void WidgetSettings::onEvent(event_t event)
{
TRACE_WINDOWS("%s received event 0x%X", getWindowDebugString().c_str(), event);
if (event == EVT_KEY_LONG(KEY_EXIT) || event == EVT_KEY_BREAK(KEY_EXIT)) {
deleteLater();
}
}
#endif
+5 -1
View File
@@ -28,5 +28,9 @@ class WidgetSettings: public Dialog
std::function<void(void)> confirmHandler;
public:
WidgetSettings(Window * parent, Widget * widget, std::function<void(void)> confirmHandler);
WidgetSettings(Window * parent, Widget * widget);
#if defined(HARDWARE_KEYS)
void onEvent(event_t event) override;
#endif
};