/* * Message flag manipulation tool * * * returns: -1 on unrecognized cmd, 0 if no change, 1 if change */ int flag_checkbox_tool(struct pine *ps, int cmd, CONF_S **cl, unsigned int flags) { int rv = 0, state; switch(cmd) { case MC_TOGGLE: /* mark/unmark feature */ state = (*cl)->d.f.fp->set; state = (state == 1) ? 0 : (!state && ((*cl)->d.f.fp->ukn)) ? 2 : 1; (*cl)->value[1] = (state == 0) ? ' ' : ((state == 1) ? 'X': '?'); (*cl)->d.f.fp->set = state; rv = 1; break; case MC_ADD: rv = FLAG_ADD_RETURN; break; case MC_EXIT: /* exit */ rv = simple_exit_cmd(flags); break; default : rv = -1; break; } return(rv); }
int context_config_tool(struct pine *ps, int cmd, CONF_S **cl, unsigned int flags) { int retval = 0; switch(cmd){ case MC_DELETE : if(!fixed_var((*cl)->var, "delete", "collection")) retval = context_config_delete(ps, cl); break; case MC_EDIT : if(!fixed_var((*cl)->var, "change", "collection")) retval = context_config_edit(ps, cl); break; case MC_ADD : if(!fixed_var((*cl)->var, "add to", "collection")) retval = context_config_add(ps, cl); break; case MC_SHUFFLE : if(!fixed_var((*cl)->var, "shuffle", "collection")) retval = context_config_shuffle(ps, cl); break; case MC_EXIT : retval = simple_exit_cmd(flags); break; default: retval = -1; break; } if(retval > 0) ps->mangled_body = 1; return(retval); }
int select_from_list_tool(struct pine *ps, int cmd, CONF_S **cl, unsigned int flags) { CONF_S *ctmp; int retval = 0; switch(cmd){ case MC_SELECT : if(*(*cl)->d.l.listmode == SingleMode){ (*cl)->d.l.lsel->selected = 1; retval = 3; } else{ /* check if anything is selected */ /* go to first line */ for(ctmp = *cl; prev_confline(ctmp); ctmp = prev_confline(ctmp)) ; for(; ctmp; ctmp = next_confline(ctmp)) if(!(ctmp->flags & CF_NOSELECT) && ctmp->d.l.lsel->selected){ retval = 3; break; } if(retval == 0){ q_status_message(SM_ORDER, 0, 3, _("Nothing selected, use Exit to exit without a selection.")); } } break; case MC_LISTMODE : if(*(*cl)->d.l.listmode == SingleMode){ /* * UnHide the checkboxes */ *(*cl)->d.l.listmode = ListMode; /* go to first line */ for(ctmp = *cl; prev_confline(ctmp); ctmp = prev_confline(ctmp)) ; for(; ctmp; ctmp = next_confline(ctmp)) if(!(ctmp->flags & CF_NOSELECT) && ctmp->value){ ctmp->value[0] = '['; ctmp->value[1] = ctmp->d.l.lsel->selected ? 'X' : SPACE; ctmp->value[2] = ']'; ctmp->keymenu = &sel_from_list_lm; } } else{ /* * Hide the checkboxes */ *(*cl)->d.l.listmode = SingleMode; /* go to first line */ for(ctmp = *cl; prev_confline(ctmp); ctmp = prev_confline(ctmp)) ; for(; ctmp; ctmp = next_confline(ctmp)) if(!(ctmp->flags & CF_NOSELECT) && ctmp->value){ ctmp->value[0] = ctmp->value[1] = ctmp->value[2] = SPACE; ctmp->keymenu = &sel_from_list_sm; } } ps->mangled_body = ps->mangled_footer = 1; break; case MC_TOGGLE : if((*cl)->value[1] == 'X'){ (*cl)->d.l.lsel->selected = 0; (*cl)->value[1] = SPACE; } else{ (*cl)->d.l.lsel->selected = 1; (*cl)->value[1] = 'X'; } ps->mangled_body = 1; break; case MC_EXIT : retval = simple_exit_cmd(flags); break; default: retval = -1; break; } if(retval > 0) ps->mangled_body = 1; return(retval); }
int context_select_tool(struct pine *ps, int cmd, CONF_S **cl, unsigned int flags) { int retval = 0; switch(cmd){ case MC_CHOICE : (*cl)->d.c.cs->selected = (*cl)->d.c.ct; retval = simple_exit_cmd(flags); break; case MC_EXIT : retval = simple_exit_cmd(flags); break; case MC_MAIN : retval = simple_exit_cmd(flags); ps_global->next_screen = main_menu_screen; break; case MC_INDEX : if(THREADING() && sp_viewing_a_thread(ps_global->mail_stream) && unview_thread(ps_global, ps_global->mail_stream, ps_global->msgmap)){ ps_global->next_screen = mail_index_screen; ps_global->view_skipped_index = 0; ps_global->mangled_screen = 1; } retval = simple_exit_cmd(flags); ps_global->next_screen = mail_index_screen; break; case MC_COMPOSE : retval = simple_exit_cmd(flags); ps_global->next_screen = compose_screen; break; case MC_ROLE : retval = simple_exit_cmd(flags); ps_global->next_screen = alt_compose_screen; break; case MC_GOTO : { int notrealinbox; CONTEXT_S *c = (*cl)->d.c.ct; char *new_fold = broach_folder(-FOOTER_ROWS(ps), 0, ¬realinbox, &c); if(new_fold && do_broach_folder(new_fold, c, NULL, notrealinbox ? 0L : DB_INBOXWOCNTXT) > 0){ ps_global->next_screen = mail_index_screen; retval = simple_exit_cmd(flags); } else ps->mangled_footer = 1; } break; case MC_QUIT : retval = simple_exit_cmd(flags); ps_global->next_screen = quit_screen; break; default: retval = -1; break; } if(retval > 0) ps->mangled_body = 1; return(retval); }