Refactor note removal

Remove the note removal code from *_delete()/*_erase() and create a new
wrapper function called day_item_erase_note() that is be used to drop
the note being associated to an item.

Signed-off-by: Lukas Fleischer <calcurse@cryptocrack.de>
This commit is contained in:
Lukas Fleischer 2012-07-07 11:55:10 +02:00
parent 69345edd77
commit 7fb25a84d4
6 changed files with 31 additions and 32 deletions

View File

@ -224,9 +224,6 @@ void apoint_delete(struct apoint *apt, enum eraseflg flag)
EXIT(_("no such appointment")); EXIT(_("no such appointment"));
switch (flag) { switch (flag) {
case ERASE_FORCE_ONLY_NOTE:
erase_note(&apt->note);
break;
case ERASE_CUT: case ERASE_CUT:
if (notify_bar()) if (notify_bar())
need_check_notify = notify_same_item(apt->start); need_check_notify = notify_same_item(apt->start);

View File

@ -524,7 +524,6 @@ enum item_type {
enum eraseflg { enum eraseflg {
ERASE_DONT_FORCE, ERASE_DONT_FORCE,
ERASE_FORCE, ERASE_FORCE,
ERASE_FORCE_ONLY_NOTE,
ERASE_CUT ERASE_CUT
}; };
@ -669,6 +668,7 @@ void custom_config_main(void);
void day_free_list(void); void day_free_list(void);
char *day_item_get_mesg(struct day_item *); char *day_item_get_mesg(struct day_item *);
char *day_item_get_note(struct day_item *); char *day_item_get_note(struct day_item *);
void day_item_erase_note(struct day_item *);
long day_item_get_duration(struct day_item *); long day_item_get_duration(struct day_item *);
int day_item_get_state(struct day_item *); int day_item_get_state(struct day_item *);
void day_item_fork(struct day_item *, struct day_item *); void day_item_fork(struct day_item *, struct day_item *);

View File

@ -123,6 +123,25 @@ char *day_item_get_note(struct day_item *day)
} }
} }
/* Get the note attached to an item. */
void day_item_erase_note(struct day_item *day)
{
switch (day->type) {
case APPT:
erase_note(&day->item.apt->note);
break;
case EVNT:
erase_note(&day->item.ev->note);
break;
case RECUR_APPT:
erase_note(&day->item.rapt->note);
break;
case RECUR_EVNT:
erase_note(&day->item.rev->note);
break;
}
}
/* Get the duration of an item. */ /* Get the duration of an item. */
long day_item_get_duration(struct day_item *day) long day_item_get_duration(struct day_item *day)
{ {

View File

@ -158,9 +158,6 @@ void event_delete(struct event *ev, enum eraseflg flag)
EXIT(_("no such appointment")); EXIT(_("no such appointment"));
switch (flag) { switch (flag) {
case ERASE_FORCE_ONLY_NOTE:
erase_note(&ev->note);
break;
case ERASE_CUT: case ERASE_CUT:
LLIST_REMOVE(&eventlist, i); LLIST_REMOVE(&eventlist, i);
break; break;

View File

@ -389,32 +389,26 @@ static int day_erase_item(long date, int item_number, enum eraseflg flag)
unsigned delete_whole; unsigned delete_whole;
p = day_get_item(item_number); p = day_get_item(item_number);
if (flag == ERASE_DONT_FORCE) { if (flag == ERASE_DONT_FORCE && day_item_get_note(p)) {
if (day_item_get_note(p) == NULL) switch (status_ask_choice(note_warning, note_choices, nb_note_choices)) {
ans = 1;
else
ans = status_ask_choice(note_warning, note_choices, nb_note_choices);
switch (ans) {
case 1: case 1:
flag = ERASE_FORCE;
break; break;
case 2: case 2:
flag = ERASE_FORCE_ONLY_NOTE; day_item_erase_note(p);
break; return 0;
default: /* User escaped */ default: /* User escaped */
return 0; return 0;
} }
} }
flag = ERASE_FORCE;
if (p->type == EVNT) { if (p->type == EVNT) {
event_delete(p->item.ev, flag); event_delete(p->item.ev, flag);
} else if (p->type == APPT) { } else if (p->type == APPT) {
apoint_delete(p->item.apt, flag); apoint_delete(p->item.apt, flag);
} else { } else {
if (flag == ERASE_FORCE_ONLY_NOTE) ans = status_ask_choice(erase_warning, erase_choices, nb_erase_choices);
ans = 1;
else
ans = status_ask_choice(erase_warning, erase_choices, nb_erase_choices);
switch (ans) { switch (ans) {
case 1: case 1:
@ -433,10 +427,8 @@ static int day_erase_item(long date, int item_number, enum eraseflg flag)
recur_apoint_erase(p->item.rapt, date, delete_whole, flag); recur_apoint_erase(p->item.rapt, date, delete_whole, flag);
} }
} }
if (flag == ERASE_FORCE_ONLY_NOTE)
return 0; return p->type;
else
return p->type;
} }
/* Pipe an appointment or event to an external program. */ /* Pipe an appointment or event to an external program. */

View File

@ -687,9 +687,6 @@ recur_event_erase(struct recur_event *rev, long start, unsigned delete_whole,
if (delete_whole) { if (delete_whole) {
switch (flag) { switch (flag) {
case ERASE_FORCE_ONLY_NOTE:
erase_note(&rev->note);
break;
case ERASE_CUT: case ERASE_CUT:
LLIST_REMOVE(&recur_elist, i); LLIST_REMOVE(&recur_elist, i);
return; return;
@ -723,13 +720,10 @@ recur_apoint_erase(struct recur_apoint *rapt, long start,
EXIT(_("appointment not found")); EXIT(_("appointment not found"));
LLIST_TS_LOCK(&recur_alist_p); LLIST_TS_LOCK(&recur_alist_p);
if (notify_bar() && flag != ERASE_FORCE_ONLY_NOTE) if (notify_bar())
need_check_notify = notify_same_recur_item(rapt); need_check_notify = notify_same_recur_item(rapt);
if (delete_whole) { if (delete_whole) {
switch (flag) { switch (flag) {
case ERASE_FORCE_ONLY_NOTE:
erase_note(&rapt->note);
break;
case ERASE_CUT: case ERASE_CUT:
LLIST_TS_REMOVE(&recur_alist_p, i); LLIST_TS_REMOVE(&recur_alist_p, i);
break; break;