fixed widget and layout menu
This commit is contained in:
committed by
Raphael Coeffic
parent
8e30661eaa
commit
d175a86bac
@@ -50,6 +50,8 @@ class LayoutFactory
|
||||
const char* getId() const { return id; }
|
||||
const char* getName() const { return name; }
|
||||
|
||||
virtual const uint8_t* getBitmap() const = 0;
|
||||
|
||||
virtual void drawThumb(BitmapBuffer* dc, uint16_t x, uint16_t y,
|
||||
LcdFlags flags) const = 0;
|
||||
|
||||
|
||||
@@ -122,6 +122,8 @@ class BaseLayoutFactory: public LayoutFactory
|
||||
{
|
||||
}
|
||||
|
||||
const uint8_t* getBitmap() const override { return bitmap; }
|
||||
|
||||
void drawThumb(BitmapBuffer * dc, uint16_t x, uint16_t y, uint32_t flags) const override
|
||||
{
|
||||
dc->drawBitmapPattern(x, y, bitmap, flags);
|
||||
|
||||
@@ -91,21 +91,18 @@ class LayoutChoice: public FormField
|
||||
{
|
||||
auto menu = new Menu(parent);
|
||||
|
||||
for (auto layout: getRegisteredLayouts()) {
|
||||
menu->addCustomLine([=](BitmapBuffer * dc, coord_t x, coord_t y, LcdFlags flags) {
|
||||
layout->drawThumb(dc, x + 2, y + 2, flags);
|
||||
dc->drawText(65, y + 5, layout->getName(), flags);
|
||||
}, [=]() {
|
||||
setValue(layout);
|
||||
});
|
||||
for (auto layout : getRegisteredLayouts()) {
|
||||
menu->addLine(layout->getBitmap(), layout->getName(),
|
||||
[=]() { setValue(layout); });
|
||||
}
|
||||
|
||||
auto it = std::find(getRegisteredLayouts().begin(), getRegisteredLayouts().end(), getValue());
|
||||
auto it = std::find(getRegisteredLayouts().begin(),
|
||||
getRegisteredLayouts().end(), getValue());
|
||||
menu->select(std::distance(getRegisteredLayouts().begin(), it));
|
||||
|
||||
menu->setCloseHandler([=]() {
|
||||
editMode = false;
|
||||
setFocus(SET_FOCUS_DEFAULT);
|
||||
editMode = false;
|
||||
setFocus(SET_FOCUS_DEFAULT);
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
@@ -38,7 +38,7 @@ static void openWidgetMenu(Widget * parent)
|
||||
menu->addLine("Full screen", [=]() {
|
||||
parent->setFullscreen(true);
|
||||
});
|
||||
if(parent->getOptions() && parent->getOptions()->name)
|
||||
if(parent->getOptions() && parent->getOptions()->name)
|
||||
menu->addLine(TR_WIDGET_SETTINGS, [=]() {
|
||||
new WidgetSettings(parent, parent);
|
||||
});
|
||||
@@ -78,11 +78,11 @@ bool Widget::onTouchEnd(coord_t x, coord_t y)
|
||||
|
||||
|
||||
if (hasFocus()) {
|
||||
|
||||
// TODO: find a better way
|
||||
if (touchState.tapCount == 0)
|
||||
onPress();
|
||||
else if (touchState.tapCount > 1)
|
||||
// if (touchState.tapCount == 0)
|
||||
// onPress();
|
||||
// else
|
||||
if (touchState.tapCount > 1)
|
||||
setFullscreen(true);
|
||||
}
|
||||
else {
|
||||
|
||||
Vendored
+1
-1
Submodule radio/src/thirdparty/libopenui updated: 52be6fba83...01343abfbd
Reference in New Issue
Block a user