X-Git-Url: http://git.madism.org/?p=apps%2Fmadmutt.git;a=blobdiff_plain;f=flags.c;h=d25aca7e2049cfc9d8d0101429b69cc121217879;hp=e00dc88062a2e6bb5b493e5238695e27b6e662cc;hb=6d838d9aef36d95fa439b3f7cc06d4e81c8581bd;hpb=1ee89902de184a640c171ae3285bff6882a791bd;ds=inline diff --git a/flags.c b/flags.c index e00dc88..d25aca7 100644 --- a/flags.c +++ b/flags.c @@ -9,15 +9,13 @@ #include -#include +#include #include -#include +#include +#include #include "mutt.h" #include "sort.h" -#include "mx.h" - -#include void _mutt_set_flag (CONTEXT * ctx, HEADER * h, int flag, int bf, int upd_ctx) @@ -266,7 +264,7 @@ void _mutt_set_flag (CONTEXT * ctx, HEADER * h, int flag, int bf, int upd_ctx) if (h->searched && (changed != h->changed || deleted != ctx->deleted || tagged != ctx->tagged || flagged != ctx->flagged)) h->searched = 0; - sidebar_draw (0); + sidebar_draw (); } void mutt_tag_set_flag (int flag, int bf) @@ -284,7 +282,7 @@ int mutt_thread_set_flag (HEADER * hdr, int flag, int bf, int subthread) if ((Sort & SORT_MASK) != SORT_THREADS) { mutt_error _("Threading is not enabled."); - return (-1); + return -1; } if (!subthread) @@ -296,7 +294,7 @@ int mutt_thread_set_flag (HEADER * hdr, int flag, int bf, int subthread) mutt_set_flag (Context, cur->message, flag, bf); if ((cur = cur->child) == NULL) - return (0); + return 0; for (;;) { if (cur->message) @@ -310,7 +308,7 @@ int mutt_thread_set_flag (HEADER * hdr, int flag, int bf, int subthread) while (!cur->next) { cur = cur->parent; if (cur == start) - return (0); + return 0; } cur = cur->next; } @@ -318,66 +316,40 @@ int mutt_thread_set_flag (HEADER * hdr, int flag, int bf, int subthread) /* not reached */ } -int mutt_change_flag (HEADER * h, int bf) +int mutt_change_flag(HEADER * h, int bf) { - int i, flag; - event_t event; - - mvprintw (LINES - 1, 0, "%s? (D/N/O/r/*/!): ", - bf ? _("Set flag") : _("Clear flag")); - clrtoeol (); - - event = mutt_getch (); - i = event.ch; - if (i == -1) { - CLEARLINE (LINES - 1); - return (-1); - } - - CLEARLINE (LINES - 1); - - switch (i) { - case 'd': - case 'D': - flag = M_DELETE; - break; - - case 'N': - case 'n': - flag = M_NEW; - break; - - case 'o': - case 'O': - if (h) - mutt_set_flag (Context, h, M_READ, !bf); - else - mutt_tag_set_flag (M_READ, !bf); - flag = M_OLD; - break; - - case 'r': - case 'R': - flag = M_REPLIED; - break; - - case '*': - flag = M_TAG; - break; - - case '!': - flag = M_FLAG; - break; - - default: - BEEP (); - return (-1); - } + char buf[STRING]; + const char letters[] = "dDnNoOrR*!"; + static char const actions[] = { + ['d'] = M_DELETE, ['D'] = M_DELETE, + ['n'] = M_NEW, ['N'] = M_NEW, + ['o'] = M_OLD, ['O'] = M_OLD, + ['r'] = M_REPLIED, ['R'] = M_REPLIED, + ['*'] = M_TAG, + ['!'] = M_FLAG, + }; + + int c; + + snprintf(buf, sizeof(buf), "%s? (D/N/O/r/*/!): ", + bf ? _("Set flag") : _("Clear flag")); + c = mutt_multi_choice(buf, letters); + if (c <= 0) + return -1; + c = letters[c - 1]; + if (actions[c] == M_OLD) { + if (h) { + mutt_set_flag(Context, h, M_READ, !bf); + } else { + mutt_tag_set_flag(M_READ, !bf); + } + } - if (h) - mutt_set_flag (Context, h, flag, bf); - else - mutt_tag_set_flag (flag, bf); + if (h) { + mutt_set_flag(Context, h, actions[c], bf); + } else { + mutt_tag_set_flag(actions[c], bf); + } - return 0; + return 0; }