Move apoint_{cut,paste}() to interaction unit
These functions get the current selection, call day_*_item() and fix the current selection on the appointment panel, so move them where they belong. Signed-off-by: Lukas Fleischer <calcurse@cryptocrack.de>
This commit is contained in:
parent
44d3c96828
commit
47d5fe2d45
51
src/apoint.c
51
src/apoint.c
@ -135,57 +135,6 @@ struct apoint *apoint_new(char *mesg, char *note, long start, long dur,
|
|||||||
return apt;
|
return apt;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Cut an item, so that it can be pasted somewhere else later. */
|
|
||||||
int apoint_cut(unsigned *nb_events, unsigned *nb_apoints)
|
|
||||||
{
|
|
||||||
const int NBITEMS = *nb_apoints + *nb_events;
|
|
||||||
int item_type, to_be_removed;
|
|
||||||
long date;
|
|
||||||
|
|
||||||
if (NBITEMS == 0)
|
|
||||||
return 0;
|
|
||||||
|
|
||||||
date = calendar_get_slctd_day_sec();
|
|
||||||
item_type = day_cut_item(date, hilt);
|
|
||||||
if (item_type == EVNT || item_type == RECUR_EVNT) {
|
|
||||||
(*nb_events)--;
|
|
||||||
to_be_removed = 1;
|
|
||||||
} else if (item_type == APPT || item_type == RECUR_APPT) {
|
|
||||||
(*nb_apoints)--;
|
|
||||||
to_be_removed = 3;
|
|
||||||
} else
|
|
||||||
EXIT(_("no such type"));
|
|
||||||
/* NOTREACHED */
|
|
||||||
|
|
||||||
if (hilt > 1)
|
|
||||||
hilt--;
|
|
||||||
if (apad.first_onscreen >= to_be_removed)
|
|
||||||
apad.first_onscreen = apad.first_onscreen - to_be_removed;
|
|
||||||
if (NBITEMS == 1)
|
|
||||||
hilt = 0;
|
|
||||||
|
|
||||||
return item_type;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Paste a previously cut item. */
|
|
||||||
void apoint_paste(unsigned *nb_events, unsigned *nb_apoints, int cut_item_type)
|
|
||||||
{
|
|
||||||
int item_type;
|
|
||||||
long date;
|
|
||||||
|
|
||||||
date = calendar_get_slctd_day_sec();
|
|
||||||
item_type = day_paste_item(date, cut_item_type);
|
|
||||||
if (item_type == EVNT || item_type == RECUR_EVNT)
|
|
||||||
(*nb_events)++;
|
|
||||||
else if (item_type == APPT || item_type == RECUR_APPT)
|
|
||||||
(*nb_apoints)++;
|
|
||||||
else
|
|
||||||
return;
|
|
||||||
|
|
||||||
if (hilt == 0)
|
|
||||||
hilt++;
|
|
||||||
}
|
|
||||||
|
|
||||||
unsigned apoint_inday(struct apoint *i, long *start)
|
unsigned apoint_inday(struct apoint *i, long *start)
|
||||||
{
|
{
|
||||||
return (i->start <= *start + DAYINSEC && i->start + i->dur > *start);
|
return (i->start <= *start + DAYINSEC && i->start + i->dur > *start);
|
||||||
|
@ -287,7 +287,7 @@ int main(int argc, char **argv)
|
|||||||
|
|
||||||
case KEY_GENERIC_CUT:
|
case KEY_GENERIC_CUT:
|
||||||
if (wins_slctd() == APP && apoint_hilt() != 0) {
|
if (wins_slctd() == APP && apoint_hilt() != 0) {
|
||||||
cut_item = apoint_cut(&inday.nb_events, &inday.nb_apoints);
|
cut_item = interact_day_item_cut(&inday.nb_events, &inday.nb_apoints);
|
||||||
inday = do_storage(0);
|
inday = do_storage(0);
|
||||||
wins_update(FLAG_CAL | FLAG_APP);
|
wins_update(FLAG_CAL | FLAG_APP);
|
||||||
}
|
}
|
||||||
@ -295,7 +295,7 @@ int main(int argc, char **argv)
|
|||||||
|
|
||||||
case KEY_GENERIC_PASTE:
|
case KEY_GENERIC_PASTE:
|
||||||
if (wins_slctd() == APP) {
|
if (wins_slctd() == APP) {
|
||||||
apoint_paste(&inday.nb_events, &inday.nb_apoints, cut_item);
|
interact_day_item_paste(&inday.nb_events, &inday.nb_apoints, cut_item);
|
||||||
cut_item = 0;
|
cut_item = 0;
|
||||||
inday = do_storage(0);
|
inday = do_storage(0);
|
||||||
wins_update(FLAG_CAL | FLAG_APP);
|
wins_update(FLAG_CAL | FLAG_APP);
|
||||||
|
@ -598,8 +598,6 @@ void apoint_hilt_decrease(int);
|
|||||||
void apoint_hilt_increase(int);
|
void apoint_hilt_increase(int);
|
||||||
int apoint_hilt(void);
|
int apoint_hilt(void);
|
||||||
struct apoint *apoint_new(char *, char *, long, long, char);
|
struct apoint *apoint_new(char *, char *, long, long, char);
|
||||||
int apoint_cut(unsigned *, unsigned *);
|
|
||||||
void apoint_paste(unsigned *, unsigned *, int);
|
|
||||||
unsigned apoint_inday(struct apoint *, long *);
|
unsigned apoint_inday(struct apoint *, long *);
|
||||||
void apoint_sec2str(struct apoint *, long, char *, char *);
|
void apoint_sec2str(struct apoint *, long, char *, char *);
|
||||||
void apoint_write(struct apoint *, FILE *);
|
void apoint_write(struct apoint *, FILE *);
|
||||||
@ -716,6 +714,8 @@ void interact_day_item_delete(unsigned *, unsigned *);
|
|||||||
void interact_day_item_edit(void);
|
void interact_day_item_edit(void);
|
||||||
void interact_day_item_pipe(void);
|
void interact_day_item_pipe(void);
|
||||||
void interact_day_item_repeat(void);
|
void interact_day_item_repeat(void);
|
||||||
|
int interact_day_item_cut(unsigned *, unsigned *);
|
||||||
|
void interact_day_item_paste(unsigned *, unsigned *, int);
|
||||||
void interact_todo_add(void);
|
void interact_todo_add(void);
|
||||||
void interact_todo_delete(void);
|
void interact_todo_delete(void);
|
||||||
void interact_todo_edit(void);
|
void interact_todo_edit(void);
|
||||||
|
@ -858,3 +858,54 @@ void interact_day_item_repeat(void)
|
|||||||
day_erase_item(date, item_nb, ERASE_FORCE);
|
day_erase_item(date, item_nb, ERASE_FORCE);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* Cut an item, so that it can be pasted somewhere else later. */
|
||||||
|
int interact_day_item_cut(unsigned *nb_events, unsigned *nb_apoints)
|
||||||
|
{
|
||||||
|
const int NBITEMS = *nb_apoints + *nb_events;
|
||||||
|
int item_type, to_be_removed;
|
||||||
|
long date;
|
||||||
|
|
||||||
|
if (NBITEMS == 0)
|
||||||
|
return 0;
|
||||||
|
|
||||||
|
date = calendar_get_slctd_day_sec();
|
||||||
|
item_type = day_cut_item(date, apoint_hilt());
|
||||||
|
if (item_type == EVNT || item_type == RECUR_EVNT) {
|
||||||
|
(*nb_events)--;
|
||||||
|
to_be_removed = 1;
|
||||||
|
} else if (item_type == APPT || item_type == RECUR_APPT) {
|
||||||
|
(*nb_apoints)--;
|
||||||
|
to_be_removed = 3;
|
||||||
|
} else
|
||||||
|
EXIT(_("no such type"));
|
||||||
|
/* NOTREACHED */
|
||||||
|
|
||||||
|
if (apoint_hilt() > 1)
|
||||||
|
apoint_hilt_decrease(1);
|
||||||
|
if (apad.first_onscreen >= to_be_removed)
|
||||||
|
apad.first_onscreen = apad.first_onscreen - to_be_removed;
|
||||||
|
if (NBITEMS == 1)
|
||||||
|
apoint_hilt_set(0);
|
||||||
|
|
||||||
|
return item_type;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Paste a previously cut item. */
|
||||||
|
void interact_day_item_paste(unsigned *nb_events, unsigned *nb_apoints,
|
||||||
|
int cut_item_type)
|
||||||
|
{
|
||||||
|
int item_type;
|
||||||
|
long date;
|
||||||
|
|
||||||
|
date = calendar_get_slctd_day_sec();
|
||||||
|
item_type = day_paste_item(date, cut_item_type);
|
||||||
|
if (item_type == EVNT || item_type == RECUR_EVNT)
|
||||||
|
(*nb_events)++;
|
||||||
|
else if (item_type == APPT || item_type == RECUR_APPT)
|
||||||
|
(*nb_apoints)++;
|
||||||
|
else
|
||||||
|
return;
|
||||||
|
|
||||||
|
if (apoint_hilt() == 0)
|
||||||
|
apoint_hilt_increase(1);
|
||||||
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user