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:
parent
69345edd77
commit
7fb25a84d4
@ -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);
|
||||||
|
@ -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 *);
|
||||||
|
19
src/day.c
19
src/day.c
@ -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)
|
||||||
{
|
{
|
||||||
|
@ -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;
|
||||||
|
@ -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. */
|
||||||
|
@ -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;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user