@@ -38,7 +38,7 @@ menu menu_main=
|
||||
{
|
||||
0,0,
|
||||
"Back\nInput mode\nBuzzer\nDisplay\nLanguage\nAbout",
|
||||
"返回\n输入模式\n蜂鸣器\n显示\n语言\n关于",
|
||||
"返回\n输入模式\n蜂鸣器\n显示\n语言\n关于",5,
|
||||
NULL
|
||||
|
||||
|
||||
@@ -48,7 +48,7 @@ menu buzzer_setting=
|
||||
{
|
||||
0,0,
|
||||
"Back\nClick\nPress\nSele change",
|
||||
"返回\n点击\n长按\n选择切换",
|
||||
"返回\n点击\n长按\n选择切换",3,
|
||||
|
||||
|
||||
|
||||
@@ -70,14 +70,9 @@ word turnoff=
|
||||
int SHOW_MENU(menu *m,int encoder,char button,char lan)
|
||||
{
|
||||
int return_code=-1;
|
||||
char str[32];
|
||||
const char *list;
|
||||
uint16_t list_len=0;
|
||||
uint16_t a=0;
|
||||
uint16_t b=0;
|
||||
uint16_t c=0;
|
||||
uint16_t d=0;
|
||||
|
||||
int sele_dis_len=0;
|
||||
char temp[10];
|
||||
//get list
|
||||
switch(lan)
|
||||
{
|
||||
@@ -92,61 +87,26 @@ int SHOW_MENU(menu *m,int encoder,char button,char lan)
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
//check how many list
|
||||
while(list[a]!='\0')
|
||||
{
|
||||
if(list[a]=='\n'){list_len++;}
|
||||
a++;
|
||||
}
|
||||
|
||||
m->sele+=encoder;
|
||||
|
||||
if(m->sele<0){m->sele=0;}
|
||||
if(m->sele>list_len){m->sele=list_len;}
|
||||
if(m->sele>m->list_const){m->sele=m->list_const;}
|
||||
|
||||
if(m->sele<m->list_dis_top+3){m->list_dis_top--;}
|
||||
if(m->sele>m->list_dis_top){if((m->list_dis_top+3)<list_len){m->list_dis_top++;}}
|
||||
if(m->sele<m->list_dis_top){m->list_dis_top--;}
|
||||
if((m->sele>m->list_dis_top+2)&&(m->list_dis_top+3<m->list_const)){m->list_dis_top++;}
|
||||
|
||||
m->list_dis_top=((list_len+1>4)?(m->list_dis_top):0);
|
||||
|
||||
//display list
|
||||
for(d=0;d<m->list_dis_top;d++)
|
||||
{
|
||||
while((*list!='\0')&&(*list!='\n'))
|
||||
{
|
||||
list++;
|
||||
}
|
||||
list++;
|
||||
|
||||
}
|
||||
|
||||
|
||||
for(b=0;b<(list_len+1>4?4:list_len+1);b++)
|
||||
{
|
||||
if((m->list_dis_top+b)==m->sele)
|
||||
{
|
||||
str[c]='>';
|
||||
|
||||
}else
|
||||
{
|
||||
str[c]=' ';
|
||||
}
|
||||
c++;
|
||||
while((*list!='\0')&&(*list!='\n'))
|
||||
{
|
||||
str[c]=*list;
|
||||
c++;
|
||||
list++;
|
||||
}
|
||||
str[c]='\0';
|
||||
OLED_Str(0, 16*b, 16, str,0, 1);
|
||||
c=0;
|
||||
list++;
|
||||
|
||||
}
|
||||
|
||||
|
||||
OLED_Str_list(0,0,16,list,m->list_dis_top,4,1);
|
||||
|
||||
sprintf(temp,"%d/%d",m->sele,m->list_const);
|
||||
OLED_Str(96,56,8,temp,0,1);
|
||||
|
||||
|
||||
OLED_square(0,(m->sele-m->list_dis_top)*16,128,((m->sele-m->list_dis_top)*16)+16,2);
|
||||
|
||||
|
||||
|
||||
if(button==1)
|
||||
{
|
||||
return_code=m->sele;
|
||||
|
||||
@@ -21,6 +21,7 @@ typedef struct
|
||||
int list_dis_top;
|
||||
const char *list_en;
|
||||
const char *list_ch;
|
||||
const unsigned char list_const;
|
||||
char *r_sw_list;
|
||||
|
||||
}menu;
|
||||
|
||||
Reference in New Issue
Block a user