ncmenu: support disabled sections #1057

pull/1062/head
nick black 4 years ago committed by Nick Black
parent 2dc1b89fbd
commit 32c029e2d5

@ -608,15 +608,23 @@ bool ncmenu_offer_input(ncmenu* n, const ncinput* nc){
int ncmenu_item_set_status(ncmenu* n, const char* section, const char* item, int ncmenu_item_set_status(ncmenu* n, const char* section, const char* item,
bool enabled){ bool enabled){
for(int si = 0 ; si < n->sectioncount ; ++si){ for(int si = 0 ; si < n->sectioncount ; ++si){
const struct ncmenu_int_section* sec = &n->sections[si]; struct ncmenu_int_section* sec = &n->sections[si];
if(strcmp(sec->name, section) == 0){ if(strcmp(sec->name, section) == 0){
for(int ii = 0 ; ii < sec->itemcount ; ++ii){ for(int ii = 0 ; ii < sec->itemcount ; ++ii){
struct ncmenu_int_item* i = &sec->items[ii]; struct ncmenu_int_item* i = &sec->items[ii];
if(strcmp(i->desc, item) == 0){ if(strcmp(i->desc, item) == 0){
const bool changed = i->disabled != enabled; const bool changed = i->disabled == enabled;
i->disabled = !enabled; i->disabled = !enabled;
if(changed && n->unrolledsection == si){ if(changed){
ncmenu_unroll(n, n->unrolledsection); if(i->disabled){
--sec->enabled_item_count;
}else{
++sec->enabled_item_count;
}
if(n->unrolledsection == si){
// FIXME if sec->enabled_item_count == 0, need choose new section
ncmenu_unroll(n, n->unrolledsection);
}
} }
return 0; return 0;
} }

@ -129,6 +129,9 @@ int main(void){
if(ncmenu_item_set_status(top, "Schwarzgerät", "Disabled", false)){ if(ncmenu_item_set_status(top, "Schwarzgerät", "Disabled", false)){
goto err; goto err;
} }
if(ncmenu_item_set_status(top, "Schwarzgerät", "Restart", false)){
goto err;
}
uint64_t channels = 0; uint64_t channels = 0;
channels_set_fg_rgb(&channels, 0x88aa00); channels_set_fg_rgb(&channels, 0x88aa00);
channels_set_bg_rgb(&channels, 0x000088); channels_set_bg_rgb(&channels, 0x000088);

Loading…
Cancel
Save