Model select cosmetics

This commit is contained in:
Bertrand Songis
2019-11-08 19:42:28 +01:00
parent 68c76f763a
commit 133e47ea01
7 changed files with 50 additions and 26 deletions
@@ -39,10 +39,6 @@ FullScreenDialog::FullScreenDialog(uint8_t type, std::string title, std::string
#endif
}
FullScreenDialog::~FullScreenDialog()
{
}
void FullScreenDialog::paint(BitmapBuffer * dc)
{
static_cast<ThemeBase *>(theme)->drawBackground(dc);
@@ -35,8 +35,6 @@ class FullScreenDialog : public Dialog {
public:
FullScreenDialog(uint8_t type, std::string title, std::string message = "", std::string action = "", std::function<void(void)> confirmHandler = nullptr);
~FullScreenDialog() override;
#if defined(DEBUG_WINDOWS)
std::string getName() override
{
+40 -13
View File
@@ -195,8 +195,8 @@ class ModelButton: public Button {
class ModelSelectFooter: public Window {
public:
ModelSelectFooter(Window * parent, const rect_t & rect):
Window(parent, rect)
explicit ModelSelectFooter(Window * parent):
Window(parent, {0, parent->height() - MODEL_SELECT_FOOTER_HEIGHT, LCD_W, MODEL_SELECT_FOOTER_HEIGHT}, OPAQUE)
{
}
@@ -209,14 +209,20 @@ class ModelSelectFooter: public Window {
void paint(BitmapBuffer * dc) override
{
dc->drawSolidFilledRect(0, 0, width(), height(), DISABLE_COLOR);
dc->drawBitmap(7, 12, modelselSdFreeBitmap);
uint32_t size = sdGetSize() / 100;
dc->drawNumber(24, 11, size, PREC1|FONT(XS), 0, NULL, "GB");
dc->drawBitmap(77, 12, modelselModelQtyBitmap);
dc->drawNumber(99, 11, modelslist.getModelsCount(), FONT(XS));
coord_t x = 7;
dc->drawMask(7, 4, modelselSdFreeBitmap, DEFAULT_COLOR);
x += modelselSdFreeBitmap->width() + 3;
x = dc->drawNumber(x, 3, size, PREC1|FONT(XS), 0, nullptr, "GB");
x += 20;
dc->drawMask(x, 4, modelselModelQtyBitmap, DEFAULT_COLOR);
x += modelselModelQtyBitmap->width() + 3;
x = dc->drawNumber(x, 3, modelslist.getModelsCount(), FONT(XS));
if (currentModel) {
dc->drawBitmap(7, 37, modelselModelNameBitmap);
dc->drawText(24, 32, currentModel->modelFilename, FONT(XS) | DEFAULT_COLOR);
x += 20;
dc->drawMask(x, 4, modelselModelNameBitmap, DEFAULT_COLOR);
x += modelselModelNameBitmap->width() + 3;
dc->drawText(x, 3, currentModel->modelFilename, FONT(XS) | DEFAULT_COLOR);
}
}
@@ -224,6 +230,13 @@ class ModelSelectFooter: public Window {
ModelCell * currentModel = nullptr;
};
#if defined(PCBX10)
constexpr coord_t MODEL_SELECT_CELL_WIDTH = (LCD_W - 3 * PAGE_PADDING) / 2;
#else
constexpr coord_t MODEL_SELECT_CELL_WIDTH = LCD_W - 2 * PAGE_PADDING;
#endif
constexpr coord_t MODEL_SELECT_CELL_HEIGHT = 94;
class ModelCategoryPageBody: public FormWindow {
public:
ModelCategoryPageBody(FormWindow * parent, const rect_t & rect, ModelsCategory * category, ModelSelectFooter * footer):
@@ -239,8 +252,10 @@ class ModelCategoryPageBody: public FormWindow {
clear();
int index = 0;
coord_t y = PAGE_PADDING;
coord_t x = PAGE_PADDING;
for (auto & model: * category) {
auto button = new ModelButton(this, {10, 10 + index * 104, LCD_W - 20, 94}, model, nullptr);
auto button = new ModelButton(this, {x, y, MODEL_SELECT_CELL_WIDTH, MODEL_SELECT_CELL_HEIGHT}, model, nullptr);
button->setFocusHandler([=] {
footer->setCurrentModel(model);
@@ -296,18 +311,30 @@ class ModelCategoryPageBody: public FormWindow {
}
else {
button->setFocus();
// footer->invalidate();
}
return 1;
});
if (selected == index) {
button->setFocus();
footer->setCurrentModel(model);
}
index++;
#if LCD_W >= 480
if (x == PAGE_PADDING) {
x = PAGE_PADDING + MODEL_SELECT_CELL_WIDTH + PAGE_PADDING;
}
else {
x = PAGE_PADDING;
y += MODEL_SELECT_CELL_HEIGHT + PAGE_PADDING;
}
#else
y += MODEL_SELECT_CELL_HEIGHT + PAGE_PADDING;
#endif
}
adjustInnerHeight();
setInnerHeight(y);
}
protected:
@@ -328,8 +355,8 @@ class ModelCategoryPage: public PageTab {
void build(FormWindow * window) override
{
auto footer = new ModelSelectFooter(window, {0, window->height() - 55, LCD_W, 55});
new ModelCategoryPageBody(window, {0, 0, LCD_W, window->height() - 55}, category, footer);
auto footer = new ModelSelectFooter(window);
new ModelCategoryPageBody(window, {0, 0, LCD_W, window->height() - MODEL_SELECT_FOOTER_HEIGHT}, category, footer);
}
};
+3 -3
View File
@@ -228,13 +228,13 @@ class FlyskyTheme: public ThemeBase
}
delete modelselSdFreeBitmap;
modelselSdFreeBitmap = BitmapBuffer::loadMaskOnBackground("modelsel/mask_sdfree.png", DEFAULT_COLOR, DEFAULT_BGCOLOR);
modelselSdFreeBitmap = BitmapBuffer::loadMask(getFilePath("modelsel/mask_sdfree.png"));
delete modelselModelQtyBitmap;
modelselModelQtyBitmap = BitmapBuffer::loadMaskOnBackground("modelsel/mask_modelqty.png", DEFAULT_COLOR, DEFAULT_BGCOLOR);
modelselModelQtyBitmap = BitmapBuffer::loadMask(getFilePath("modelsel/mask_modelqty.png"));
delete modelselModelNameBitmap;
modelselModelNameBitmap = BitmapBuffer::loadMaskOnBackground("modelsel/mask_modelname.png", DEFAULT_COLOR, DEFAULT_BGCOLOR);
modelselModelNameBitmap = BitmapBuffer::loadMask(getFilePath("modelsel/mask_modelname.png"));
delete modelselModelMoveBackground;
modelselModelMoveBackground = BitmapBuffer::loadMask(getFilePath("modelsel/mask_moveback.png"));
+3 -3
View File
@@ -208,13 +208,13 @@ class FrskyTheme: public ThemeBase
}
delete modelselSdFreeBitmap;
modelselSdFreeBitmap = BitmapBuffer::loadMaskOnBackground("modelsel/mask_sdfree.png", DEFAULT_COLOR, DEFAULT_BGCOLOR);
modelselSdFreeBitmap = BitmapBuffer::loadMask(getFilePath("modelsel/mask_sdfree.png"));
delete modelselModelQtyBitmap;
modelselModelQtyBitmap = BitmapBuffer::loadMaskOnBackground("modelsel/mask_modelqty.png", DEFAULT_COLOR, DEFAULT_BGCOLOR);
modelselModelQtyBitmap = BitmapBuffer::loadMask(getFilePath("modelsel/mask_modelqty.png"));
delete modelselModelNameBitmap;
modelselModelNameBitmap = BitmapBuffer::loadMaskOnBackground("modelsel/mask_modelname.png", DEFAULT_COLOR, DEFAULT_BGCOLOR);
modelselModelNameBitmap = BitmapBuffer::loadMask(getFilePath("modelsel/mask_modelname.png"));
delete modelselModelMoveBackground;
modelselModelMoveBackground = BitmapBuffer::loadMask(getFilePath("modelsel/mask_moveback.png"));
+2 -1
View File
@@ -47,7 +47,7 @@ constexpr uint32_t DEFAULT_SCROLLBAR_X = LCD_W - 10;
constexpr uint32_t DEFAULT_SCROLLBAR_Y = MENU_CONTENT_TOP;
constexpr uint32_t DEFAULT_SCROLLBAR_H = MENU_FOOTER_TOP - DEFAULT_SCROLLBAR_Y - 6;
constexpr uint32_t PAGE_PADDING = 6;
constexpr coord_t PAGE_PADDING = 6;
constexpr uint32_t PAGE_LINE_HEIGHT = 20;
constexpr uint32_t PAGE_LINE_SPACING = 2;
constexpr uint32_t PAGE_INDENT_WIDTH = 10;
@@ -159,6 +159,7 @@ constexpr coord_t MENUS_HEADER_HEIGHT = 30;
constexpr coord_t MENUS_FOOTER_HEIGHT = 0;
constexpr coord_t MENUS_MIN_HEIGHT = 2 * MENUS_LINE_HEIGHT - 1;
constexpr coord_t MENUS_MAX_HEIGHT = 7 * MENUS_LINE_HEIGHT - 1;
constexpr coord_t MODEL_SELECT_FOOTER_HEIGHT = 24;
constexpr int CJK_FIRST_LETTER_INDEX = 187;
@@ -158,6 +158,8 @@ constexpr coord_t MENUS_FOOTER_HEIGHT = 0;
constexpr coord_t MENUS_MIN_HEIGHT = 2 * MENUS_LINE_HEIGHT - 1;
constexpr coord_t MENUS_MAX_HEIGHT = 7 * MENUS_LINE_HEIGHT - 1;
constexpr coord_t MODEL_SELECT_FOOTER_HEIGHT = 24;
constexpr int CJK_FIRST_LETTER_INDEX = 187;
#endif // _LIBOPENUI_CONFIG_H_