Factor out parse_datetime()
Create a new function that takes a time stamp and updates the date or time components of that time stamp according to a given date/time string. Use that function for updating the start time of an item. Signed-off-by: Lukas Fleischer <lfleischer@calcurse.org>
This commit is contained in:
30
src/ui-day.c
30
src/ui-day.c
@@ -67,36 +67,16 @@ static int day_edit_time(int time)
|
||||
const char *enter_str = _("Press [Enter] to continue");
|
||||
const char *fmt_msg =
|
||||
_("You entered an invalid time, should be [hh:mm] or [hhmm]");
|
||||
unsigned int hour, minute;
|
||||
int year, month, day;
|
||||
struct date new_date;
|
||||
long ts = time;
|
||||
|
||||
for (;;) {
|
||||
status_mesg(msg_time, "");
|
||||
if (updatestring(win[STA].p, &input, 0, 1) != GETSTRING_VALID)
|
||||
return 0;
|
||||
char *inputcpy = mem_strdup(input);
|
||||
char *p = strtok(inputcpy, " ");
|
||||
while (p) {
|
||||
if (parse_date(p, conf.input_datefmt, &year, &month,
|
||||
&day, ui_calendar_get_slctd_day())) {
|
||||
new_date.dd = day;
|
||||
new_date.mm = month;
|
||||
new_date.yyyy = year;
|
||||
time = date2sec(new_date, 0, 0) +
|
||||
get_item_time(time);
|
||||
} else if (parse_time(p, &hour, &minute) == 1) {
|
||||
time = update_time_in_date(time, hour, minute);
|
||||
} else {
|
||||
status_mesg(fmt_msg, enter_str);
|
||||
wgetch(win[KEY].p);
|
||||
break;
|
||||
}
|
||||
p = strtok(NULL, " ");
|
||||
}
|
||||
mem_free(inputcpy);
|
||||
if (!p)
|
||||
return time;
|
||||
if (parse_datetime(input, &ts))
|
||||
return ts;
|
||||
status_mesg(fmt_msg, enter_str);
|
||||
wgetch(win[KEY].p);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user