From: Andy Spencer Date: Mon, 26 Jan 2015 20:52:06 +0000 (+0000) Subject: Add calendar edit/save functions X-Git-Url: http://pileus.org/git/?p=lackey;a=commitdiff_plain;h=c604f2cc0284825a03c762a2e92d459bb9ba86e7 Add calendar edit/save functions The calendar should set a form field using form_set to do it's editing. Also move the edit types into cal.h so that it cal.h doesn't depend on view stuff. --- diff --git a/cals/dummy.c b/cals/dummy.c index 1f57b11..9de8ed9 100644 --- a/cals/dummy.c +++ b/cals/dummy.c @@ -99,3 +99,12 @@ todo_t *dummy_todos(date_t start, date_t end) } return enable ? todo.next : 0; } + +/* Edit functions */ +void dummy_edit(edit_t mode) +{ +} + +void dummy_save(edit_t mode) +{ +} diff --git a/cals/ical.c b/cals/ical.c index 57fff1e..898bf61 100644 --- a/cals/ical.c +++ b/cals/ical.c @@ -332,6 +332,15 @@ todo_t *ical_todos(date_t _start, date_t _end) return todos; } +/* Edit functions */ +void ical_edit(edit_t mode) +{ +} + +void ical_save(edit_t mode) +{ +} + /* Test functions */ void ical_printr(icalcomponent *comp, int depth) { diff --git a/src/cal.c b/src/cal.c index afc18f0..5d5c637 100644 --- a/src/cal.c +++ b/src/cal.c @@ -26,7 +26,9 @@ void name##_config(const char *group, const char *name, const char *key, const char *value); \ cal_t *name##_cals(void); \ event_t *name##_events(date_t start, date_t end); \ - todo_t *name##_todos(date_t start, date_t end) + todo_t *name##_todos(date_t start, date_t end); \ + void name##_edit(edit_t mode); \ + void name##_save(edit_t mode) /* Prototypes */ CAL(dummy); @@ -201,6 +203,26 @@ void cal_config(const char *group, const char *name, const char *key, const char ical_config(group, name, key, value); } +/* Edit functions */ +void cal_edit(edit_t mode) +{ + const cal_t *cal = + mode == EDIT_EVENT ? EVENT->cal : + mode == EDIT_TODO ? TODO->cal : CAL; + debug("cal_edit"); + if (match(cal->type, "dummy")) dummy_edit(mode); + if (match(cal->type, "ical")) ical_edit(mode); +} + +void cal_save(edit_t mode) +{ + const cal_t *cal = + mode == EDIT_EVENT ? EVENT->cal : + mode == EDIT_TODO ? TODO->cal : CAL; + if (match(cal->type, "dummy")) dummy_save(mode); + if (match(cal->type, "ical")) ical_save(mode); +} + /* Find event for matching target date */ event_t *find_event(date_t *target) { diff --git a/src/cal.h b/src/cal.h index 7d308ec..07f113b 100644 --- a/src/cal.h +++ b/src/cal.h @@ -15,6 +15,14 @@ * along with this program. If not, see . */ +/* Edit modes */ +typedef enum { + EDIT_NONE, + EDIT_CAL, + EDIT_EVENT, + EDIT_TODO, +} edit_t; + /* Cal status types */ typedef enum { NEW = 0, @@ -64,5 +72,9 @@ void cal_init(void); void cal_load(year_t year, month_t month, day_t day, int days); void cal_config(const char *group, const char *name, const char *key, const char *value); +/* Edit functions */ +void cal_edit(edit_t edit); +void cal_save(edit_t edit); + /* Event functions */ event_t *find_event(date_t *target); diff --git a/src/view.c b/src/view.c index cfff88e..3268617 100644 --- a/src/view.c +++ b/src/view.c @@ -441,6 +441,7 @@ void view_config(const char *group, const char *name, const char *key, const cha void view_edit(edit_t mode) { EDIT = mode; + cal_edit(mode); set_view(active, &edit_view); } diff --git a/src/view.h b/src/view.h index b896bea..facb204 100644 --- a/src/view.h +++ b/src/view.h @@ -32,14 +32,6 @@ #define SHOW_DETAILS 0x1 #define SHOW_ACTIVE 0x2 -/* Edit modes */ -typedef enum { - EDIT_NONE, - EDIT_CAL, - EDIT_EVENT, - EDIT_TODO, -} edit_t; - /* Config data */ extern int COMPACT; // reduce layout spacing extern int MORNING; // first line to display