u8g2-copy/csrc/mui_u8g2.c

1156 lines
29 KiB
C
Raw Normal View History

2021-08-28 16:10:38 +08:00
/*
mui_u8g2.c
Monochrome minimal user interface: Glue code between mui and u8g2.
Universal 8bit Graphics Library (https://github.com/olikraus/u8g2/)
Copyright (c) 2016, olikraus@gmail.com
All rights reserved.
Redistribution and use in source and binary forms, with or without modification,
are permitted provided that the following conditions are met:
* Redistributions of source code must retain the above copyright notice, this list
of conditions and the following disclaimer.
* Redistributions in binary form must reproduce the above copyright notice, this
list of conditions and the following disclaimer in the documentation and/or other
materials provided with the distribution.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND
CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
2021-08-09 00:49:36 +08:00
2021-08-28 15:50:28 +08:00
#include "mui.h"
2021-08-09 00:49:36 +08:00
#include "u8g2.h"
2021-08-28 15:50:28 +08:00
#include "mui_u8g2.h"
2021-08-09 00:49:36 +08:00
/*
2021-08-28 18:44:34 +08:00
uint8_t mui_template(mui_t *ui, uint8_t msg)
2021-08-09 00:49:36 +08:00
{
2021-08-28 18:44:34 +08:00
//u8g2_t *u8g2 = mui_get_U8g2(ui);
2021-08-28 15:30:19 +08:00
//ui->dflags MUIF_DFLAG_IS_CURSOR_FOCUS MUIF_DFLAG_IS_TOUCH_FOCUS
2021-08-28 16:43:44 +08:00
//muif_get_cflags(ui->uif) MUIF_CFLAG_IS_CURSOR_SELECTABLE
//muif_get_data(ui->uif)
2021-08-09 00:49:36 +08:00
switch(msg)
{
2021-08-28 15:30:19 +08:00
case MUIF_MSG_DRAW:
2021-08-09 00:49:36 +08:00
break;
2021-08-28 15:30:19 +08:00
case MUIF_MSG_FORM_START:
2021-08-09 00:49:36 +08:00
break;
2021-08-28 15:30:19 +08:00
case MUIF_MSG_FORM_END:
2021-08-09 00:49:36 +08:00
break;
2021-08-28 15:30:19 +08:00
case MUIF_MSG_CURSOR_ENTER:
2021-08-09 00:49:36 +08:00
break;
2021-08-28 15:30:19 +08:00
case MUIF_MSG_CURSOR_SELECT:
2021-08-09 00:49:36 +08:00
break;
2021-08-28 15:30:19 +08:00
case MUIF_MSG_CURSOR_LEAVE:
2021-08-09 00:49:36 +08:00
break;
2021-08-28 15:30:19 +08:00
case MUIF_MSG_TOUCH_DOWN:
2021-08-09 00:49:36 +08:00
break;
2021-08-28 15:30:19 +08:00
case MUIF_MSG_TOUCH_UP:
2021-08-09 00:49:36 +08:00
break;
}
return 0;
}
*/
2021-08-23 00:22:25 +08:00
2021-08-28 16:56:51 +08:00
/*=========================================================================*/
/* extra u8g2 drawing functions */
2021-08-18 05:18:10 +08:00
2021-08-23 04:43:03 +08:00
void u8g2_DrawCheckbox(u8g2_t *u8g2, u8g2_uint_t x, u8g2_uint_t y, u8g2_uint_t w, u8g2_uint_t is_checked)
{
u8g2_DrawFrame(u8g2, x, y-w, w, w);
if ( is_checked )
{
w-=4;
u8g2_DrawBox(u8g2, x+2, y-w-2, w, w);
}
}
void u8g2_DrawValueMark(u8g2_t *u8g2, u8g2_uint_t x, u8g2_uint_t y, u8g2_uint_t w)
{
u8g2_DrawBox(u8g2, x, y-w, w, w);
}
2021-08-16 06:06:52 +08:00
/*=========================================================================*/
/* helper function */
2021-08-28 18:44:34 +08:00
u8g2_uint_t mui_get_x(mui_t *ui)
2021-08-09 00:49:36 +08:00
{
return ui->x;
}
2021-08-28 18:44:34 +08:00
u8g2_uint_t mui_get_y(mui_t *ui)
2021-08-09 00:49:36 +08:00
{
return ui->y;
}
2021-08-28 18:44:34 +08:00
u8g2_t *mui_get_U8g2(mui_t *ui)
2021-08-09 00:49:36 +08:00
{
return (u8g2_t *)(ui->graphics_data);
}
2021-08-29 02:06:39 +08:00
2021-08-16 06:06:52 +08:00
/*=========================================================================*/
2021-08-21 19:31:11 +08:00
/* incomplete (draw only) field functions */
2021-08-16 06:06:52 +08:00
2021-08-21 19:31:11 +08:00
2021-08-29 02:06:39 +08:00
2021-08-21 19:31:11 +08:00
/*
xy: yes, arg: no, text: yes
*/
2021-08-28 16:43:44 +08:00
uint8_t mui_frame_button_bold_select_u8g2(mui_t *ui, uint8_t msg)
2021-08-09 00:49:36 +08:00
{
2021-08-28 15:30:19 +08:00
u8g2_t *u8g2 = mui_get_U8g2(ui);
2021-08-28 16:43:44 +08:00
u8g2_uint_t flags = U8G2_BTN_HCENTER;
2021-08-09 00:49:36 +08:00
switch(msg)
{
2021-08-28 15:30:19 +08:00
case MUIF_MSG_DRAW:
2021-08-09 00:49:36 +08:00
//printf("DRAW fds=%p uif=%p text=%s\n", ui->fds, ui->uif, ui->text);
2021-08-28 15:30:19 +08:00
//u8g2_DrawStr(mui_get_U8g2(ui), mui_get_x(ui), mui_get_y(ui), ui->text);
2021-08-28 15:40:10 +08:00
//u8g2_DrawButtonUTF8(mui_get_U8g2(mui), mui_get_x(mui), mui_get_y(mui), U8G2_BTN_HCENTER | U8G2_BTN_BW1 | U8G2_BTN_INV, 4, 1, ui->text);
//u8g2_DrawButtonUTF8(mui_get_U8g2(mui), mui_get_x(mui), mui_get_y(mui), U8G2_BTN_HCENTER | U8G2_BTN_PADWIDTH | U8G2_BTN_SHADOW2 | 2, 100, 1, ui->text);
//u8g2_DrawRButtonUTF8(mui_get_U8g2(mui), mui_get_x(mui), mui_get_y(mui), U8G2_BTN_HCENTER | U8G2_BTN_INV | 3, 2, 1, ui->text);
2021-08-28 15:30:19 +08:00
if ( ui->dflags & MUIF_DFLAG_IS_CURSOR_FOCUS )
2021-08-21 19:31:11 +08:00
{
flags |= 3;
}
else
{
flags |= 1;
}
2021-08-28 15:30:19 +08:00
u8g2_DrawButtonUTF8(u8g2, mui_get_x(ui), mui_get_y(ui), flags, u8g2_GetDisplayWidth(u8g2)/2 - 10, 0, 1, ui->text);
2021-08-09 00:49:36 +08:00
break;
2021-08-28 15:30:19 +08:00
case MUIF_MSG_FORM_START:
2021-08-09 00:49:36 +08:00
break;
2021-08-28 15:30:19 +08:00
case MUIF_MSG_FORM_END:
2021-08-09 00:49:36 +08:00
break;
2021-08-28 15:30:19 +08:00
case MUIF_MSG_CURSOR_ENTER:
2021-08-09 00:49:36 +08:00
break;
2021-08-28 15:30:19 +08:00
case MUIF_MSG_CURSOR_SELECT:
2021-08-09 00:49:36 +08:00
break;
2021-08-28 15:30:19 +08:00
case MUIF_MSG_CURSOR_LEAVE:
2021-08-09 00:49:36 +08:00
break;
2021-08-28 15:30:19 +08:00
case MUIF_MSG_TOUCH_DOWN:
2021-08-09 00:49:36 +08:00
break;
2021-08-28 15:30:19 +08:00
case MUIF_MSG_TOUCH_UP:
2021-08-09 00:49:36 +08:00
break;
}
return 0;
}
2021-08-28 18:44:34 +08:00
/*
uint8_t mui_frame_button_invers_select_u8g2(mui_t *ui, uint8_t msg)
Description:
A button with size equal to the inner text width plus 1 pixel extra padding
The button has a one pixel frame around the text.
Message Handling: DRAW
Style
No Selection: Text + Frame
Cursor Selection: Inverted text + Frame
User interface field list (muif):
flags: MUIF_CFLAG_IS_CURSOR_SELECTABLE
data: not used
Field definition string (fds):
xy: Center position of the text (required)
arg: not used
text: Button label
*/
uint8_t mui_frame_button_invers_select_u8g2(mui_t *ui, uint8_t msg)
{
u8g2_t *u8g2 = mui_get_U8g2(ui);
u8g2_uint_t flags = U8G2_BTN_HCENTER | 1;
switch(msg)
{
case MUIF_MSG_DRAW:
if ( mui_IsCursorFocus(ui) )
{
flags |= U8G2_BTN_INV;
}
u8g2_DrawButtonUTF8(u8g2, mui_get_x(ui), mui_get_y(ui), flags, 0, 1, 1, ui->text);
break;
case MUIF_MSG_FORM_START:
break;
case MUIF_MSG_FORM_END:
break;
case MUIF_MSG_CURSOR_ENTER:
break;
case MUIF_MSG_CURSOR_SELECT:
break;
case MUIF_MSG_CURSOR_LEAVE:
break;
case MUIF_MSG_TOUCH_DOWN:
break;
case MUIF_MSG_TOUCH_UP:
break;
}
return 0;
}
2021-08-21 19:31:11 +08:00
/*
2021-08-28 16:43:44 +08:00
uint8_t mui_half_width_frame_button_invers_select_u8g2(mui_t *ui, uint8_t msg)
2021-08-21 19:31:11 +08:00
Description:
A button with size equal to display width / 2 - 10 pixel
The button has a one pixel frame around the text.
Message Handling: DRAW
Style
No Selection: Text + Frame
Cursor Selection: Inverted text + Frame
2021-08-28 15:30:19 +08:00
User interface field list (muif):
flags: MUIF_CFLAG_IS_CURSOR_SELECTABLE
2021-08-21 19:31:11 +08:00
data: not used
Field definition string (fds):
2021-08-28 18:44:34 +08:00
xy: Center position of the text (required)
2021-08-21 19:31:11 +08:00
arg: not used
text: Button label
*/
2021-08-28 16:43:44 +08:00
uint8_t mui_half_width_frame_button_invers_select_u8g2(mui_t *ui, uint8_t msg)
2021-08-09 00:49:36 +08:00
{
2021-08-28 15:30:19 +08:00
u8g2_t *u8g2 = mui_get_U8g2(ui);
2021-08-22 00:08:28 +08:00
u8g2_uint_t flags = U8G2_BTN_HCENTER | 1;
2021-08-09 00:49:36 +08:00
switch(msg)
{
2021-08-28 15:30:19 +08:00
case MUIF_MSG_DRAW:
if ( mui_IsCursorFocus(ui) )
2021-08-09 00:49:36 +08:00
{
2021-08-21 19:31:11 +08:00
flags |= U8G2_BTN_INV;
2021-08-09 00:49:36 +08:00
}
2021-08-28 15:30:19 +08:00
u8g2_DrawButtonUTF8(u8g2, mui_get_x(ui), mui_get_y(ui), flags, u8g2_GetDisplayWidth(u8g2)/2 - 10, 0, 1, ui->text);
2021-08-09 00:49:36 +08:00
break;
2021-08-28 15:30:19 +08:00
case MUIF_MSG_FORM_START:
2021-08-09 00:49:36 +08:00
break;
2021-08-28 15:30:19 +08:00
case MUIF_MSG_FORM_END:
2021-08-09 00:49:36 +08:00
break;
2021-08-28 15:30:19 +08:00
case MUIF_MSG_CURSOR_ENTER:
2021-08-09 00:49:36 +08:00
break;
2021-08-28 15:30:19 +08:00
case MUIF_MSG_CURSOR_SELECT:
2021-08-09 00:49:36 +08:00
break;
2021-08-28 15:30:19 +08:00
case MUIF_MSG_CURSOR_LEAVE:
2021-08-09 00:49:36 +08:00
break;
2021-08-28 15:30:19 +08:00
case MUIF_MSG_TOUCH_DOWN:
2021-08-09 00:49:36 +08:00
break;
2021-08-28 15:30:19 +08:00
case MUIF_MSG_TOUCH_UP:
2021-08-09 00:49:36 +08:00
break;
}
return 0;
}
2021-08-09 15:50:03 +08:00
2021-08-15 22:23:17 +08:00
/*
2021-08-21 19:31:11 +08:00
2021-08-28 16:43:44 +08:00
uint8_t mui_line_button_invers_select_u8g2(mui_t *ui, uint8_t msg)
2021-08-21 19:31:11 +08:00
Description:
A full line button (covers complete width of the display).
Message Handling: DRAW
Style
No Selection: Text only
Cursor Selection: Inverted text
2021-08-28 15:30:19 +08:00
User interface field list (muif):
flags: MUIF_CFLAG_IS_CURSOR_SELECTABLE
2021-08-21 19:31:11 +08:00
data: not used
Field definition string (fds):
xy: Left position of the text (required)
arg: not used
text: Button label
2021-08-15 22:23:17 +08:00
*/
2021-08-28 16:43:44 +08:00
uint8_t mui_line_button_invers_select_u8g2(mui_t *ui, uint8_t msg)
2021-08-15 22:23:17 +08:00
{
2021-08-28 15:30:19 +08:00
u8g2_t *u8g2 = mui_get_U8g2(ui);
2021-08-21 19:31:11 +08:00
//u8g2_uint_t flags = U8G2_BTN_HCENTER ;
u8g2_uint_t flags = 0;
2021-08-15 22:23:17 +08:00
switch(msg)
{
2021-08-28 15:30:19 +08:00
case MUIF_MSG_DRAW:
if ( mui_IsCursorFocus(ui) )
2021-08-15 22:23:17 +08:00
{
flags |= U8G2_BTN_INV;
}
2021-08-28 15:30:19 +08:00
u8g2_DrawButtonUTF8(u8g2, mui_get_x(ui), mui_get_y(ui), flags, u8g2_GetDisplayWidth(u8g2)-mui_get_x(ui)*2, mui_get_x(ui) , 0, ui->text);
2021-08-15 22:23:17 +08:00
break;
2021-08-28 15:30:19 +08:00
case MUIF_MSG_FORM_START:
2021-08-15 22:23:17 +08:00
break;
2021-08-28 15:30:19 +08:00
case MUIF_MSG_FORM_END:
2021-08-15 22:23:17 +08:00
break;
2021-08-28 15:30:19 +08:00
case MUIF_MSG_CURSOR_ENTER:
2021-08-15 22:23:17 +08:00
break;
2021-08-28 15:30:19 +08:00
case MUIF_MSG_CURSOR_SELECT:
2021-08-15 22:23:17 +08:00
break;
2021-08-28 15:30:19 +08:00
case MUIF_MSG_CURSOR_LEAVE:
2021-08-15 22:23:17 +08:00
break;
2021-08-28 15:30:19 +08:00
case MUIF_MSG_TOUCH_DOWN:
2021-08-15 22:23:17 +08:00
break;
2021-08-28 15:30:19 +08:00
case MUIF_MSG_TOUCH_UP:
2021-08-15 22:23:17 +08:00
break;
}
return 0;
}
2021-08-21 19:31:11 +08:00
2021-08-27 16:09:34 +08:00
/*
2021-08-28 16:43:44 +08:00
uint8_t mui_radio_mark_invers_select_u8g2(mui_t *ui, uint8_t msg)
2021-08-27 16:09:34 +08:00
Description:
A selectable button with a rectangle in front of it, if arg is equal to the current value (*(uint8_t *)data)
2021-08-29 02:06:39 +08:00
If the text argument is empty, then this cb tries to get the text from the parent.
2021-08-27 16:09:34 +08:00
Message Handling: DRAW
Style
No Selection: Text only
Cursor Selection: Inverted text
2021-08-28 15:30:19 +08:00
User interface field list (muif):
flags: MUIF_CFLAG_IS_CURSOR_SELECTABLE
2021-08-27 16:09:34 +08:00
data: uint8_t *, pointer to a uint8_t variable, which defines, whether there is a rectangle in front of the text
Field definition string (fds):
xy: Left position of the text (required)
arg: The number of this button, which is compared against *(uint8_t *)data (required)
2021-08-29 02:06:39 +08:00
text: Button label (optional, might be taken from previous field)
2021-08-27 16:09:34 +08:00
*/
2021-08-28 16:43:44 +08:00
uint8_t mui_radio_mark_invers_select_u8g2(mui_t *ui, uint8_t msg)
2021-08-23 04:43:03 +08:00
{
2021-08-28 15:30:19 +08:00
u8g2_t *u8g2 = mui_get_U8g2(ui);
2021-08-23 04:43:03 +08:00
u8g2_uint_t flags = 0;
2021-08-28 16:43:44 +08:00
uint8_t *value = (uint8_t *)muif_get_data(ui->uif);
2021-08-28 17:33:52 +08:00
//if ( value == NULL )
// value = &(ui->selected_value);
2021-08-23 04:43:03 +08:00
switch(msg)
{
2021-08-28 15:30:19 +08:00
case MUIF_MSG_DRAW:
if ( mui_IsCursorFocus(ui) )
2021-08-23 04:43:03 +08:00
{
flags |= U8G2_BTN_INV;
}
{
u8g2_uint_t w = 0;
u8g2_uint_t a = u8g2_GetAscent(u8g2) - 2;
2021-08-28 15:30:19 +08:00
u8g2_uint_t x = mui_get_x(ui); // if mui_GetSelectableFieldTextOption is called, then field vars are overwritten, so get the value
u8g2_uint_t y = mui_get_y(ui); // if mui_GetSelectableFieldTextOption is called, then field vars are overwritten, so get the value
2021-08-23 04:43:03 +08:00
if ( *value == ui->arg )
2021-08-27 16:09:34 +08:00
u8g2_DrawValueMark(u8g2, x, y, a);
if ( ui->text[0] == '\0' )
{
/* if the text is not provided, then try to get the text from the previous (saved) element, assuming that this contains the selection */
/* this will overwrite all ui member functions, so we must not access any ui members (except ui->text) any more */
2021-08-28 15:30:19 +08:00
mui_GetSelectableFieldTextOption(ui, ui->last_form_id, ui->last_form_cursor_focus_position, ui->arg);
2021-08-27 16:09:34 +08:00
}
2021-08-23 04:43:03 +08:00
if ( ui->text[0] != '\0' )
{
w = u8g2_GetUTF8Width(u8g2, ui->text);
u8g2_SetFontMode(u8g2, 1);
a += 2; /* add gap between the checkbox and the text area */
2021-08-27 16:09:34 +08:00
u8g2_DrawUTF8(u8g2, x+a, y, ui->text);
2021-08-23 04:43:03 +08:00
}
2021-08-27 16:09:34 +08:00
u8g2_DrawButtonFrame(u8g2, x, y, flags, w+a, 1, 1);
2021-08-23 04:43:03 +08:00
}
break;
2021-08-28 15:30:19 +08:00
case MUIF_MSG_FORM_START:
2021-08-23 04:43:03 +08:00
break;
2021-08-28 15:30:19 +08:00
case MUIF_MSG_FORM_END:
2021-08-23 04:43:03 +08:00
break;
2021-08-28 15:30:19 +08:00
case MUIF_MSG_CURSOR_ENTER:
2021-08-23 04:43:03 +08:00
break;
2021-08-28 15:30:19 +08:00
case MUIF_MSG_CURSOR_SELECT:
2021-08-23 04:43:03 +08:00
*value = ui->arg;
break;
2021-08-28 15:30:19 +08:00
case MUIF_MSG_CURSOR_LEAVE:
2021-08-23 04:43:03 +08:00
break;
2021-08-28 15:30:19 +08:00
case MUIF_MSG_TOUCH_DOWN:
2021-08-23 04:43:03 +08:00
break;
2021-08-28 15:30:19 +08:00
case MUIF_MSG_TOUCH_UP:
2021-08-23 04:43:03 +08:00
break;
}
return 0;
}
2021-08-29 02:06:39 +08:00
/*
uint8_t mui_radio_mark_invers_select_u8g2(mui_t *ui, uint8_t msg)
Description:
A selectable button with a checkbox in front of it. Selected, if arg is equal to the current value (*(uint8_t *)data)
Message Handling: DRAW
Style
No Selection: Text only
Cursor Selection: Inverted text
User interface field list (muif):
flags: MUIF_CFLAG_IS_CURSOR_SELECTABLE
data: uint8_t *, pointer to a uint8_t variable, which defines, whether there checkbox is checked or not
Field definition string (fds):
xy: Left position of the text (required)
arg: The number of this button, which is compared against *(uint8_t *)data (required)
text: Button label (usually required)
*/
2021-08-28 20:04:06 +08:00
uint8_t mui_radio_checkbox_mark_invers_select_u8g2(mui_t *ui, uint8_t msg)
{
u8g2_t *u8g2 = mui_get_U8g2(ui);
u8g2_uint_t flags = 0;
uint8_t *value = (uint8_t *)muif_get_data(ui->uif);
switch(msg)
{
case MUIF_MSG_DRAW:
if ( mui_IsCursorFocus(ui) )
{
flags |= U8G2_BTN_INV;
}
{
u8g2_uint_t w = 0;
u8g2_uint_t a = u8g2_GetAscent(u8g2);
if ( *value == ui->arg )
u8g2_DrawCheckbox(u8g2, mui_get_x(ui), mui_get_y(ui), a, 1);
else
u8g2_DrawCheckbox(u8g2, mui_get_x(ui), mui_get_y(ui), a, 0);
if ( ui->text[0] != '\0' )
{
w = u8g2_GetUTF8Width(u8g2, ui->text);
u8g2_SetFontMode(u8g2, 1);
a += 2; /* add gap between the checkbox and the text area */
u8g2_DrawUTF8(u8g2, mui_get_x(ui)+a, mui_get_y(ui), ui->text);
}
u8g2_DrawButtonFrame(u8g2, mui_get_x(ui), mui_get_y(ui), flags, w+a, 1, 1);
}
break;
case MUIF_MSG_FORM_START:
break;
case MUIF_MSG_FORM_END:
break;
case MUIF_MSG_CURSOR_ENTER:
break;
case MUIF_MSG_CURSOR_SELECT:
break;
case MUIF_MSG_CURSOR_LEAVE:
break;
case MUIF_MSG_TOUCH_DOWN:
break;
case MUIF_MSG_TOUCH_UP:
break;
}
return 0;
}
2021-08-29 02:06:39 +08:00
/*
uint8_t mui_radio_mark_invers_select_u8g2(mui_t *ui, uint8_t msg)
Description:
A selectable text with a checkbox in front of it. Selected, if *(uint8_t *)data is not 0.
Message Handling: DRAW
Style
No Selection: Text only
Cursor Selection: Inverted text
User interface field list (muif):
flags: MUIF_CFLAG_IS_CURSOR_SELECTABLE
data: uint8_t *, pointer to a uint8_t variable, which defines, whether there checkbox is checked or not
Field definition string (fds):
xy: Left position of the text (required)
arg: not used
text: Button label (optional)
*/
2021-08-28 20:04:06 +08:00
uint8_t mui_checkbox_mark_invers_select_u8g2(mui_t *ui, uint8_t msg)
{
u8g2_t *u8g2 = mui_get_U8g2(ui);
u8g2_uint_t flags = 0;
uint8_t *value = (uint8_t *)muif_get_data(ui->uif);
switch(msg)
{
case MUIF_MSG_DRAW:
if ( *value > 1 ) *value = 1;
if ( mui_IsCursorFocus(ui) )
{
flags |= U8G2_BTN_INV;
}
{
u8g2_uint_t w = 0;
u8g2_uint_t a = u8g2_GetAscent(u8g2);
if ( *value )
u8g2_DrawCheckbox(u8g2, mui_get_x(ui), mui_get_y(ui), a, 1);
else
u8g2_DrawCheckbox(u8g2, mui_get_x(ui), mui_get_y(ui), a, 0);
if ( ui->text[0] != '\0' )
{
w = u8g2_GetUTF8Width(u8g2, ui->text);
u8g2_SetFontMode(u8g2, 1);
a += 2; /* add gap between the checkbox and the text area */
u8g2_DrawUTF8(u8g2, mui_get_x(ui)+a, mui_get_y(ui), ui->text);
}
u8g2_DrawButtonFrame(u8g2, mui_get_x(ui), mui_get_y(ui), flags, w+a, 1, 1);
}
break;
case MUIF_MSG_FORM_START:
break;
case MUIF_MSG_FORM_END:
break;
case MUIF_MSG_CURSOR_ENTER:
break;
case MUIF_MSG_CURSOR_SELECT:
break;
case MUIF_MSG_CURSOR_LEAVE:
break;
case MUIF_MSG_TOUCH_DOWN:
break;
case MUIF_MSG_TOUCH_UP:
break;
}
return 0;
}
2021-08-27 16:09:34 +08:00
2021-08-21 19:31:11 +08:00
/*=========================================================================*/
/* ready to use field functions */
2021-08-16 06:06:52 +08:00
/*
2021-08-21 19:31:11 +08:00
xy: yes, arg: no, text: yes
2021-08-16 06:06:52 +08:00
*/
2021-08-21 19:31:11 +08:00
2021-08-28 16:43:44 +08:00
uint8_t mui_label_u8g2(mui_t *ui, uint8_t msg)
2021-08-16 06:06:52 +08:00
{
switch(msg)
{
2021-08-28 15:30:19 +08:00
case MUIF_MSG_DRAW:
u8g2_DrawStr(mui_get_U8g2(ui), mui_get_x(ui), mui_get_y(ui), ui->text);
2021-08-16 06:06:52 +08:00
break;
2021-08-28 15:30:19 +08:00
case MUIF_MSG_FORM_START:
2021-08-16 06:06:52 +08:00
break;
2021-08-28 15:30:19 +08:00
case MUIF_MSG_FORM_END:
2021-08-16 06:06:52 +08:00
break;
2021-08-28 15:30:19 +08:00
case MUIF_MSG_CURSOR_ENTER:
2021-08-16 06:06:52 +08:00
break;
2021-08-28 15:30:19 +08:00
case MUIF_MSG_CURSOR_SELECT:
2021-08-16 06:06:52 +08:00
break;
2021-08-28 15:30:19 +08:00
case MUIF_MSG_CURSOR_LEAVE:
2021-08-16 06:06:52 +08:00
break;
2021-08-28 15:30:19 +08:00
case MUIF_MSG_TOUCH_DOWN:
2021-08-16 06:06:52 +08:00
break;
2021-08-28 15:30:19 +08:00
case MUIF_MSG_TOUCH_UP:
2021-08-16 06:06:52 +08:00
break;
}
return 0;
}
2021-08-28 18:44:34 +08:00
/*
uint8_t mui_goto_frame_button_invers_select_u8g2(mui_t *ui, uint8_t msg)
Description:
A button with size equal to button text plus one pixel padding
The button has a one pixel frame around the text.
If the selected, then the form will change to the specified form number.
Message Handling: DRAW, CURSOR_SELECT
Style
No Selection: Text + Frame
Cursor Selection: Inverted text + Frame
User interface field list (muif):
flags: MUIF_CFLAG_IS_CURSOR_SELECTABLE
data: not used
Field definition string (fds):
xy: Left position of the text (required)
arg: Form numner (required)
text: Button label
*/
uint8_t mui_goto_frame_button_invers_select_u8g2(mui_t *ui, uint8_t msg)
{
switch(msg)
{
case MUIF_MSG_CURSOR_SELECT:
return mui_GotoForm(ui, ui->arg, 0);
}
return mui_frame_button_invers_select_u8g2(ui, msg);
}
2021-08-21 19:31:11 +08:00
/*
2021-08-28 16:43:44 +08:00
uint8_t mui_goto_half_width_frame_button_invers_select_u8g2(mui_t *ui, uint8_t msg)
2021-08-21 19:31:11 +08:00
Description:
A button with size equal to display width / 2 - 10 pixel
The button has a one pixel frame around the text.
If the selected, then the form will change to the specified form number.
Message Handling: DRAW, CURSOR_SELECT
Style
No Selection: Text + Frame
Cursor Selection: Inverted text + Frame
2021-08-28 15:30:19 +08:00
User interface field list (muif):
flags: MUIF_CFLAG_IS_CURSOR_SELECTABLE
2021-08-21 19:31:11 +08:00
data: not used
Field definition string (fds):
xy: Left position of the text (required)
2021-08-28 18:44:34 +08:00
arg: Form numner (required)
2021-08-21 19:31:11 +08:00
text: Button label
*/
2021-08-28 16:43:44 +08:00
uint8_t mui_goto_half_width_frame_button_invers_select_u8g2(mui_t *ui, uint8_t msg)
2021-08-15 22:23:17 +08:00
{
switch(msg)
{
2021-08-28 15:30:19 +08:00
case MUIF_MSG_CURSOR_SELECT:
return mui_GotoForm(ui, ui->arg, 0);
2021-08-15 22:23:17 +08:00
}
2021-08-28 16:43:44 +08:00
return mui_half_width_frame_button_invers_select_u8g2(ui, msg);
2021-08-15 22:23:17 +08:00
}
2021-08-30 06:56:09 +08:00
/*
uint8_t mui_leave_menu_frame_button_invers_select_u8g2(mui_t *ui, uint8_t msg)
Description:
A button with size equal to button text plus one pixel padding
The button has a one pixel frame around the text.
If the selected, then the menu system will be closed.
The arg value will be stored at the specified data location (if not NULL).
The arg value can be used as an exit value of the button.
Message Handling: DRAW, CURSOR_SELECT
Style
No Selection: Text + Frame
Cursor Selection: Inverted text + Frame
User interface field list (muif):
flags: MUIF_CFLAG_IS_CURSOR_SELECTABLE
data: Optionally points to uint8_t value which will receive the arg value of the field.
Field definition string (fds):
xy: Left position of the text (required)
arg: Value which will be stored at *data (optional)
text: Button label
*/
uint8_t mui_leave_menu_frame_button_invers_select_u8g2(mui_t *ui, uint8_t msg)
{
switch(msg)
{
case MUIF_MSG_CURSOR_SELECT:
{
uint8_t *value = (uint8_t *)muif_get_data(ui->uif);
if ( value != NULL )
*value = ui->arg;
}
mui_LeaveForm(ui);
return 1;
}
return mui_frame_button_invers_select_u8g2(ui, msg);
}
2021-08-15 22:23:17 +08:00
2021-08-21 19:31:11 +08:00
/*
2021-08-28 16:43:44 +08:00
uint8_t mui_goto_line_button_invers_select_u8g2(mui_t *ui, uint8_t msg)
2021-08-21 19:31:11 +08:00
Description:
A full line button (covers complete width of the display).
If the selected, then the form will change to the specified form number.
Message Handling: DRAW, CURSOR_SELECT
Style
No Selection: Text only
Cursor Selection: Inverted text
2021-08-28 15:30:19 +08:00
User interface field list (muif):
flags: MUIF_CFLAG_IS_CURSOR_SELECTABLE
2021-08-21 19:31:11 +08:00
data: not used
Field definition string (fds):
xy: Left position of the text (required)
arg: If selected, the form will change to the form specified by this argument
text: Button label
*/
2021-08-28 16:43:44 +08:00
uint8_t mui_goto_line_button_invers_select_u8g2(mui_t *ui, uint8_t msg)
2021-08-16 06:06:52 +08:00
{
switch(msg)
{
2021-08-28 15:30:19 +08:00
case MUIF_MSG_CURSOR_SELECT:
return mui_GotoForm(ui, ui->arg, 0);
2021-08-16 06:06:52 +08:00
}
2021-08-28 16:43:44 +08:00
return mui_line_button_invers_select_u8g2(ui, msg);
2021-08-16 06:06:52 +08:00
}
2021-08-15 22:23:17 +08:00
2021-08-10 23:59:11 +08:00
/*
2021-08-18 05:18:10 +08:00
2021-08-28 16:43:44 +08:00
uint8_t mui_input_uint8_invers_select_u8g2(mui_t *ui, uint8_t msg)
2021-08-21 19:31:11 +08:00
Description:
Select a number between 0 and 9.
Only one number is visible.
The visible option is automatically the selected number.
The selected number is stored ad the target data location.
Message Handling: DRAW, SELECT
2021-08-18 05:18:10 +08:00
2021-08-21 19:31:11 +08:00
Style
No Selection: Number only
Cursor Selection: Inverted number
2021-08-28 15:30:19 +08:00
User interface field list (muif):
flags: MUIF_CFLAG_IS_CURSOR_SELECTABLE
2021-08-21 19:31:11 +08:00
data: uint8_t *, pointer to a uint8_t variable, which contains the selected option
Field definition string (fds):
xy: Left position of the text (required)
2021-08-22 00:08:28 +08:00
arg: not used
2021-08-21 19:31:11 +08:00
text: not used
2021-08-10 23:59:11 +08:00
*/
2021-08-28 16:43:44 +08:00
uint8_t mui_input_uint8_invers_select_u8g2(mui_t *ui, uint8_t msg)
2021-08-09 15:50:03 +08:00
{
2021-08-28 15:30:19 +08:00
//ui->dflags MUIF_DFLAG_IS_CURSOR_FOCUS MUIF_DFLAG_IS_TOUCH_FOCUS
2021-08-28 16:43:44 +08:00
//mui_get_cflags(ui->uif) MUIF_CFLAG_IS_CURSOR_SELECTABLE
2021-08-28 15:30:19 +08:00
u8g2_t *u8g2 = mui_get_U8g2(ui);
2021-08-21 04:50:29 +08:00
u8g2_uint_t flags = 0;
2021-08-28 16:43:44 +08:00
uint8_t *value = (uint8_t *)muif_get_data(ui->uif);
2021-08-09 15:50:03 +08:00
char buf[6];
switch(msg)
{
2021-08-28 15:30:19 +08:00
case MUIF_MSG_DRAW:
2021-08-09 15:50:03 +08:00
if ( *value > 9 ) *value = 9;
buf[0] = (char)(*value + '0');
buf[1] = '\0';
2021-08-28 15:30:19 +08:00
if ( mui_IsCursorFocus(ui) )
2021-08-09 15:50:03 +08:00
{
flags |= U8G2_BTN_INV;
2021-09-05 05:25:20 +08:00
}
2021-08-28 15:30:19 +08:00
u8g2_DrawButtonUTF8(u8g2, mui_get_x(ui), mui_get_y(ui), flags, u8g2_GetStrWidth(u8g2, "9"), 1, 1, buf);
2021-08-09 15:50:03 +08:00
break;
2021-08-28 15:30:19 +08:00
case MUIF_MSG_FORM_START:
2021-08-09 15:50:03 +08:00
break;
2021-08-28 15:30:19 +08:00
case MUIF_MSG_FORM_END:
2021-08-09 15:50:03 +08:00
break;
2021-08-28 15:30:19 +08:00
case MUIF_MSG_CURSOR_ENTER:
2021-08-09 15:50:03 +08:00
break;
2021-08-28 15:30:19 +08:00
case MUIF_MSG_CURSOR_SELECT:
2021-08-09 15:50:03 +08:00
(*value)++;
if ( *value > 9 ) *value = 0;
break;
2021-08-28 15:30:19 +08:00
case MUIF_MSG_CURSOR_LEAVE:
2021-08-09 15:50:03 +08:00
break;
2021-08-28 15:30:19 +08:00
case MUIF_MSG_TOUCH_DOWN:
2021-08-09 15:50:03 +08:00
break;
2021-08-28 15:30:19 +08:00
case MUIF_MSG_TOUCH_UP:
2021-08-09 15:50:03 +08:00
break;
}
return 0;
}
2021-08-10 23:59:11 +08:00
2021-09-05 05:25:20 +08:00
uint8_t mui_is_valid_char(uint8_t c)
{
if ( c == 32 )
return 1;
if ( c >= 'A' && c <= 'Z' )
return 1;
if ( c >= 'a' && c <= 'z' )
return 1;
if ( c >= '0' && c <= '9' )
return 1;
return 0;
}
uint8_t mui_input_char_invers_select_u8g2(mui_t *ui, uint8_t msg)
{
//ui->dflags MUIF_DFLAG_IS_CURSOR_FOCUS MUIF_DFLAG_IS_TOUCH_FOCUS
//mui_get_cflags(ui->uif) MUIF_CFLAG_IS_CURSOR_SELECTABLE
u8g2_t *u8g2 = mui_get_U8g2(ui);
u8g2_uint_t flags = 0;
uint8_t *value = (uint8_t *)muif_get_data(ui->uif);
char buf[6];
switch(msg)
{
case MUIF_MSG_DRAW:
while( mui_is_valid_char(*value) == 0 )
(*value)++;
buf[0] = *value;
buf[1] = '\0';
if ( mui_IsCursorFocus(ui) )
{
flags |= U8G2_BTN_INV;
if ( ui->curr_focus_field_tmp )
{
flags |= U8G2_BTN_XFRAME;
}
}
2021-09-05 05:47:06 +08:00
u8g2_DrawButtonUTF8(u8g2, mui_get_x(ui), mui_get_y(ui), flags, u8g2_GetMaxCharWidth(u8g2), 1, 1, buf);
2021-09-05 05:25:20 +08:00
break;
case MUIF_MSG_FORM_START:
break;
case MUIF_MSG_FORM_END:
break;
case MUIF_MSG_CURSOR_ENTER:
/* 0: normal mode, 1: capture next/prev mode */
ui->curr_focus_field_tmp = 0;
break;
case MUIF_MSG_CURSOR_SELECT:
/* toggle between normal mode and capture next/prev mode */
if ( ui->curr_focus_field_tmp )
ui->curr_focus_field_tmp = 0;
else
ui->curr_focus_field_tmp = 1;
break;
case MUIF_MSG_CURSOR_LEAVE:
break;
case MUIF_MSG_TOUCH_DOWN:
break;
case MUIF_MSG_TOUCH_UP:
break;
case MUIF_MSG_EVENT_NEXT:
if ( ui->curr_focus_field_tmp )
{
do {
(*value)++;
} while( mui_is_valid_char(*value) == 0 );
return 1;
}
break;
case MUIF_MSG_EVENT_PREV:
if ( ui->curr_focus_field_tmp )
{
do {
(*value)--;
} while( mui_is_valid_char(*value) == 0 );
return 1;
}
break;
}
return 0;
}
2021-08-10 23:59:11 +08:00
/*
2021-08-21 19:31:11 +08:00
2021-08-28 16:43:44 +08:00
uint8_t mui_single_line_option_invers_select_u8g2(mui_t *ui, uint8_t msg)
2021-08-21 19:31:11 +08:00
Description:
Select one of several options. First option has value 0.
Only one option is visible.
The visible option is automatically the selected option.
Message Handling: DRAW, SELECT
Style
No Selection: Text only
Cursor Selection: Inverted text
2021-08-28 15:30:19 +08:00
User interface field list (muif):
flags: MUIF_CFLAG_IS_CURSOR_SELECTABLE
2021-08-21 19:31:11 +08:00
data: uint8_t *, pointer to a uint8_t variable, which contains the selected option
Field definition string (fds):
xy: Left position of the text (required)
arg: total width of the selectable option (optional),
text: '|' separated list of options
2021-08-10 23:59:11 +08:00
*/
2021-08-28 16:43:44 +08:00
uint8_t mui_single_line_option_invers_select_u8g2(mui_t *ui, uint8_t msg)
2021-08-10 23:59:11 +08:00
{
2021-08-28 15:30:19 +08:00
//ui->dflags MUIF_DFLAG_IS_CURSOR_FOCUS MUIF_DFLAG_IS_TOUCH_FOCUS
2021-08-28 16:43:44 +08:00
//mui_get_cflags(ui->uif) MUIF_CFLAG_IS_CURSOR_SELECTABLE
2021-08-28 15:30:19 +08:00
u8g2_t *u8g2 = mui_get_U8g2(ui);
2021-08-21 04:50:29 +08:00
u8g2_uint_t flags = 0;
2021-08-18 05:18:10 +08:00
//u8g2_uint_t flags = 0;
2021-08-28 16:43:44 +08:00
uint8_t *value = (uint8_t *)muif_get_data(ui->uif);
2021-08-10 23:59:11 +08:00
switch(msg)
{
2021-08-28 15:30:19 +08:00
case MUIF_MSG_DRAW:
if ( mui_fds_get_nth_token(ui, *value) == 0 )
2021-08-10 23:59:11 +08:00
{
*value = 0;
2021-08-28 15:30:19 +08:00
mui_fds_get_nth_token(ui, *value);
2021-08-10 23:59:11 +08:00
}
2021-08-28 15:30:19 +08:00
if ( mui_IsCursorFocus(ui) )
2021-08-10 23:59:11 +08:00
{
flags |= U8G2_BTN_INV;
}
2021-08-28 15:30:19 +08:00
u8g2_DrawButtonUTF8(u8g2, mui_get_x(ui), mui_get_y(ui), flags, ui->arg, 1, 1, ui->text);
2021-08-10 23:59:11 +08:00
break;
2021-08-28 15:30:19 +08:00
case MUIF_MSG_FORM_START:
2021-08-10 23:59:11 +08:00
break;
2021-08-28 15:30:19 +08:00
case MUIF_MSG_FORM_END:
2021-08-10 23:59:11 +08:00
break;
2021-08-28 15:30:19 +08:00
case MUIF_MSG_CURSOR_ENTER:
2021-08-10 23:59:11 +08:00
break;
2021-08-28 15:30:19 +08:00
case MUIF_MSG_CURSOR_SELECT:
2021-08-10 23:59:11 +08:00
(*value)++;
2021-08-28 15:30:19 +08:00
if ( mui_fds_get_nth_token(ui, *value) == 0 )
2021-08-10 23:59:11 +08:00
*value = 0;
break;
2021-08-28 15:30:19 +08:00
case MUIF_MSG_CURSOR_LEAVE:
2021-08-10 23:59:11 +08:00
break;
2021-08-28 15:30:19 +08:00
case MUIF_MSG_TOUCH_DOWN:
2021-08-10 23:59:11 +08:00
break;
2021-08-28 15:30:19 +08:00
case MUIF_MSG_TOUCH_UP:
2021-08-10 23:59:11 +08:00
break;
}
return 0;
}
2021-08-23 00:22:25 +08:00
2021-08-23 04:43:03 +08:00
2021-08-29 00:10:17 +08:00
uint8_t mui_select_options_parent_invers_select_u8g2(mui_t *ui, uint8_t msg)
2021-08-23 00:22:25 +08:00
{
2021-08-28 15:30:19 +08:00
//ui->dflags MUIF_DFLAG_IS_CURSOR_FOCUS MUIF_DFLAG_IS_TOUCH_FOCUS
2021-08-28 16:43:44 +08:00
//mui_get_cflags(ui->uif) MUIF_CFLAG_IS_CURSOR_SELECTABLE
2021-08-28 15:30:19 +08:00
u8g2_t *u8g2 = mui_get_U8g2(ui);
2021-08-23 04:43:03 +08:00
u8g2_uint_t flags = 0;
//u8g2_uint_t flags = 0;
2021-08-28 16:43:44 +08:00
uint8_t *value = (uint8_t *)muif_get_data(ui->uif);
2021-08-23 04:43:03 +08:00
switch(msg)
2021-08-23 00:22:25 +08:00
{
2021-08-28 15:30:19 +08:00
case MUIF_MSG_DRAW:
if ( mui_fds_get_nth_token(ui, *value) == 0 )
2021-08-23 04:43:03 +08:00
{
*value = 0;
2021-08-28 15:30:19 +08:00
mui_fds_get_nth_token(ui, *value);
2021-08-23 04:43:03 +08:00
}
2021-08-28 15:30:19 +08:00
if ( mui_IsCursorFocus(ui) )
2021-08-23 04:43:03 +08:00
{
flags |= U8G2_BTN_INV;
}
2021-08-28 15:30:19 +08:00
u8g2_DrawButtonUTF8(u8g2, mui_get_x(ui), mui_get_y(ui), flags, 0, 1, 1, ui->text);
2021-08-23 04:43:03 +08:00
break;
2021-08-28 15:30:19 +08:00
case MUIF_MSG_FORM_START:
2021-08-23 04:43:03 +08:00
break;
2021-08-28 15:30:19 +08:00
case MUIF_MSG_FORM_END:
2021-08-23 04:43:03 +08:00
break;
2021-08-28 15:30:19 +08:00
case MUIF_MSG_CURSOR_ENTER:
2021-08-23 04:43:03 +08:00
break;
2021-08-28 15:30:19 +08:00
case MUIF_MSG_CURSOR_SELECT:
mui_SaveForm(ui); // store the current form and position so that the child can jump back
mui_GotoForm(ui, ui->arg, *value); // assumes that the selectable values are at the top of the form
2021-08-23 04:43:03 +08:00
break;
2021-08-28 15:30:19 +08:00
case MUIF_MSG_CURSOR_LEAVE:
2021-08-23 04:43:03 +08:00
break;
2021-08-28 15:30:19 +08:00
case MUIF_MSG_TOUCH_DOWN:
2021-08-23 04:43:03 +08:00
break;
2021-08-28 15:30:19 +08:00
case MUIF_MSG_TOUCH_UP:
2021-08-23 04:43:03 +08:00
break;
2021-08-23 00:22:25 +08:00
}
2021-08-23 04:43:03 +08:00
return 0;
2021-08-23 00:22:25 +08:00
}
2021-08-23 04:43:03 +08:00
/*
2021-08-28 16:43:44 +08:00
uint8_t mui_checkbox_invers_select_u8g2(mui_t *ui, uint8_t msg)
2021-08-23 00:22:25 +08:00
2021-08-23 04:43:03 +08:00
Description:
Checkbox with the values 0 (not selected) and 1 (selected).
Message Handling: DRAW, SELECT
Style
No Selection: Plain checkbox and text
Cursor Selection: Checkbox and text is inverted
2021-08-28 15:30:19 +08:00
User interface field list (muif):
flags: MUIF_CFLAG_IS_CURSOR_SELECTABLE
2021-08-23 04:43:03 +08:00
data: uint8_t *, pointer to a uint8_t variable, which contains the values 0 or 1
Field definition string (fds):
xy: Left position of the text (required)
arg: not used
text: Optional: Text will be printed after the checkbox with a small gap
*/
2021-08-28 16:43:44 +08:00
uint8_t mui_checkbox_invers_select_u8g2(mui_t *ui, uint8_t msg)
2021-08-23 00:22:25 +08:00
{
2021-08-28 20:04:06 +08:00
//u8g2_t *u8g2 = mui_get_U8g2(ui);
//u8g2_uint_t flags = 0;
2021-08-28 16:43:44 +08:00
uint8_t *value = (uint8_t *)muif_get_data(ui->uif);
2021-08-23 00:22:25 +08:00
switch(msg)
{
2021-08-28 15:30:19 +08:00
case MUIF_MSG_DRAW:
2021-08-28 20:04:06 +08:00
return mui_checkbox_mark_invers_select_u8g2(ui, msg);
2021-08-28 15:30:19 +08:00
case MUIF_MSG_FORM_START:
2021-08-23 00:22:25 +08:00
break;
2021-08-28 15:30:19 +08:00
case MUIF_MSG_FORM_END:
2021-08-23 00:22:25 +08:00
break;
2021-08-28 15:30:19 +08:00
case MUIF_MSG_CURSOR_ENTER:
2021-08-23 00:22:25 +08:00
break;
2021-08-28 15:30:19 +08:00
case MUIF_MSG_CURSOR_SELECT:
2021-08-23 00:22:25 +08:00
(*value)++;
if ( *value > 1 ) *value = 0;
2021-08-28 15:30:19 +08:00
case MUIF_MSG_CURSOR_LEAVE:
2021-08-23 00:22:25 +08:00
break;
2021-08-28 15:30:19 +08:00
case MUIF_MSG_TOUCH_DOWN:
2021-08-23 00:22:25 +08:00
break;
2021-08-28 15:30:19 +08:00
case MUIF_MSG_TOUCH_UP:
2021-08-23 00:22:25 +08:00
break;
}
return 0;
}
2021-08-28 20:04:06 +08:00
/*
radio button style, arg is assigned as value
*/
uint8_t mui_radio_invers_select_u8g2(mui_t *ui, uint8_t msg)
{
uint8_t *value = (uint8_t *)muif_get_data(ui->uif);
switch(msg)
{
case MUIF_MSG_DRAW:
return mui_radio_checkbox_mark_invers_select_u8g2(ui, msg);
case MUIF_MSG_FORM_START:
break;
case MUIF_MSG_FORM_END:
break;
case MUIF_MSG_CURSOR_ENTER:
break;
case MUIF_MSG_CURSOR_SELECT:
*value = ui->arg;
break;
case MUIF_MSG_CURSOR_LEAVE:
break;
case MUIF_MSG_TOUCH_DOWN:
break;
case MUIF_MSG_TOUCH_UP:
break;
}
return 0;
}
#ifdef OBSOLETE
2021-08-28 16:43:44 +08:00
uint8_t mui_assign_arg_invers_select_u8g2(mui_t *ui, uint8_t msg)
2021-08-23 04:43:03 +08:00
{
2021-08-28 16:43:44 +08:00
uint8_t *value = (uint8_t *)muif_get_data(ui->uif);
2021-08-28 17:33:52 +08:00
//if ( value == NULL )
// value = &(ui->selected_value);
2021-08-23 04:43:03 +08:00
switch(msg)
{
2021-08-28 15:30:19 +08:00
case MUIF_MSG_DRAW:
2021-08-28 16:43:44 +08:00
return mui_radio_mark_invers_select_u8g2(ui, msg);
2021-08-28 15:30:19 +08:00
case MUIF_MSG_FORM_START:
2021-08-23 04:43:03 +08:00
break;
2021-08-28 15:30:19 +08:00
case MUIF_MSG_FORM_END:
2021-08-23 04:43:03 +08:00
break;
2021-08-28 15:30:19 +08:00
case MUIF_MSG_CURSOR_ENTER:
2021-08-23 04:43:03 +08:00
break;
2021-08-28 15:30:19 +08:00
case MUIF_MSG_CURSOR_SELECT:
2021-08-23 04:43:03 +08:00
*value = ui->arg;
break;
2021-08-28 15:30:19 +08:00
case MUIF_MSG_CURSOR_LEAVE:
2021-08-23 04:43:03 +08:00
break;
2021-08-28 15:30:19 +08:00
case MUIF_MSG_TOUCH_DOWN:
2021-08-23 04:43:03 +08:00
break;
2021-08-28 15:30:19 +08:00
case MUIF_MSG_TOUCH_UP:
2021-08-23 04:43:03 +08:00
break;
}
return 0;
}
2021-08-28 20:04:06 +08:00
#endif
2021-08-23 04:43:03 +08:00
2021-08-29 00:10:17 +08:00
uint8_t mui_select_options_child_invers_select_u8g2(mui_t *ui, uint8_t msg)
2021-08-23 04:43:03 +08:00
{
2021-08-28 16:43:44 +08:00
uint8_t *value = (uint8_t *)muif_get_data(ui->uif);
2021-08-28 17:33:52 +08:00
//if ( value == NULL )
// value = &(ui->selected_value);
2021-08-23 04:43:03 +08:00
switch(msg)
{
2021-08-28 15:30:19 +08:00
case MUIF_MSG_DRAW:
2021-08-28 16:43:44 +08:00
return mui_radio_mark_invers_select_u8g2(ui, msg);
2021-08-28 15:30:19 +08:00
case MUIF_MSG_FORM_START:
2021-08-23 04:43:03 +08:00
break;
2021-08-28 15:30:19 +08:00
case MUIF_MSG_FORM_END:
2021-08-23 04:43:03 +08:00
break;
2021-08-28 15:30:19 +08:00
case MUIF_MSG_CURSOR_ENTER:
2021-08-23 04:43:03 +08:00
break;
2021-08-28 15:30:19 +08:00
case MUIF_MSG_CURSOR_SELECT:
2021-08-23 04:43:03 +08:00
*value = ui->arg;
2021-08-28 15:30:19 +08:00
mui_RestoreForm(ui);
2021-08-23 04:43:03 +08:00
break;
2021-08-28 15:30:19 +08:00
case MUIF_MSG_CURSOR_LEAVE:
2021-08-23 04:43:03 +08:00
break;
2021-08-28 15:30:19 +08:00
case MUIF_MSG_TOUCH_DOWN:
2021-08-23 04:43:03 +08:00
break;
2021-08-28 15:30:19 +08:00
case MUIF_MSG_TOUCH_UP:
2021-08-23 04:43:03 +08:00
break;
}
return 0;
}