Also saving and restoring the status of the task (done or not)
This commit is contained in:
parent
26550ea34a
commit
e0b3d8a009
38
src/task.c
38
src/task.c
|
@ -34,6 +34,11 @@ struct _Task
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
/* prototype */
|
||||||
|
static int _task_config_get_boolean(Task * task, char const * section,
|
||||||
|
char const * variable);
|
||||||
|
|
||||||
|
|
||||||
/* public */
|
/* public */
|
||||||
/* functions */
|
/* functions */
|
||||||
/* task_new */
|
/* task_new */
|
||||||
|
@ -82,6 +87,13 @@ void task_delete(Task * task)
|
||||||
|
|
||||||
|
|
||||||
/* accessors */
|
/* accessors */
|
||||||
|
/* task_get_done */
|
||||||
|
int task_get_done(Task * task)
|
||||||
|
{
|
||||||
|
return _task_config_get_boolean(task, NULL, "done");
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/* task_get_filename */
|
/* task_get_filename */
|
||||||
char const * task_get_filename(Task * task)
|
char const * task_get_filename(Task * task)
|
||||||
{
|
{
|
||||||
|
@ -96,6 +108,13 @@ char const * task_get_title(Task * task)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/* task_set_done */
|
||||||
|
int task_set_done(Task * task, int done)
|
||||||
|
{
|
||||||
|
return config_set(task->config, NULL, "done", done ? "1" : "0");
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/* task_set_filename */
|
/* task_set_filename */
|
||||||
int task_set_filename(Task * task, char const * filename)
|
int task_set_filename(Task * task, char const * filename)
|
||||||
{
|
{
|
||||||
|
@ -141,3 +160,22 @@ int task_unlink(Task * task)
|
||||||
return 1; /* XXX set error */
|
return 1; /* XXX set error */
|
||||||
return unlink(task->filename);
|
return unlink(task->filename);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/* private */
|
||||||
|
/* functions */
|
||||||
|
/* task_config_get_boolean */
|
||||||
|
static int _task_config_get_boolean(Task * task, char const * section,
|
||||||
|
char const * variable)
|
||||||
|
{
|
||||||
|
int ret;
|
||||||
|
char const * string;
|
||||||
|
char * p;
|
||||||
|
|
||||||
|
if((string = config_get(task->config, section, variable)) == NULL)
|
||||||
|
return -1;
|
||||||
|
ret = strtol(string, &p, 10);
|
||||||
|
if(string[0] == '\0' || *p != '\0')
|
||||||
|
return -1;
|
||||||
|
return ret ? 1 : 0;
|
||||||
|
}
|
||||||
|
|
|
@ -31,9 +31,11 @@ void task_delete(Task * task);
|
||||||
|
|
||||||
|
|
||||||
/* accessors */
|
/* accessors */
|
||||||
|
int task_get_done(Task * task);
|
||||||
char const * task_get_filename(Task * task);
|
char const * task_get_filename(Task * task);
|
||||||
char const * task_get_title(Task * task);
|
char const * task_get_title(Task * task);
|
||||||
|
|
||||||
|
int task_set_done(Task * task, int done);
|
||||||
int task_set_filename(Task * task, char const * filename);
|
int task_set_filename(Task * task, char const * filename);
|
||||||
int task_set_title(Task * task, char const * title);
|
int task_set_title(Task * task, char const * title);
|
||||||
|
|
||||||
|
|
22
src/todo.c
22
src/todo.c
|
@ -157,6 +157,7 @@ static DesktopToolbar _toolbar[] =
|
||||||
static char * _todo_task_get_directory(void);
|
static char * _todo_task_get_directory(void);
|
||||||
static char * _todo_task_get_filename(char const * filename);
|
static char * _todo_task_get_filename(char const * filename);
|
||||||
static char * _todo_task_get_new_filename(void);
|
static char * _todo_task_get_new_filename(void);
|
||||||
|
static void _todo_task_save(Todo * todo, GtkTreeIter * iter);
|
||||||
|
|
||||||
|
|
||||||
/* public */
|
/* public */
|
||||||
|
@ -347,6 +348,7 @@ Task * todo_task_add(Todo * todo, Task * task)
|
||||||
}
|
}
|
||||||
gtk_list_store_insert(todo->store, &iter, 0);
|
gtk_list_store_insert(todo->store, &iter, 0);
|
||||||
gtk_list_store_set(todo->store, &iter, TD_COL_TASK, task,
|
gtk_list_store_set(todo->store, &iter, TD_COL_TASK, task,
|
||||||
|
TD_COL_DONE, task_get_done(task) > 0 ? TRUE : FALSE,
|
||||||
TD_COL_TITLE, task_get_title(task), -1);
|
TD_COL_TITLE, task_get_title(task), -1);
|
||||||
return task;
|
return task;
|
||||||
}
|
}
|
||||||
|
@ -479,14 +481,10 @@ void todo_task_save_all(Todo * todo)
|
||||||
GtkTreeModel * model = GTK_TREE_MODEL(todo->store);
|
GtkTreeModel * model = GTK_TREE_MODEL(todo->store);
|
||||||
GtkTreeIter iter;
|
GtkTreeIter iter;
|
||||||
gboolean valid;
|
gboolean valid;
|
||||||
Task * task;
|
|
||||||
|
|
||||||
valid = gtk_tree_model_get_iter_first(model, &iter);
|
valid = gtk_tree_model_get_iter_first(model, &iter);
|
||||||
for(; valid == TRUE; valid = gtk_tree_model_iter_next(model, &iter))
|
for(; valid == TRUE; valid = gtk_tree_model_iter_next(model, &iter))
|
||||||
{
|
_todo_task_save(todo, &iter);
|
||||||
gtk_tree_model_get(model, &iter, TD_COL_TASK, &task, -1);
|
|
||||||
task_save(task);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -594,3 +592,17 @@ static char * _todo_task_get_new_filename(void)
|
||||||
close(fd);
|
close(fd);
|
||||||
return filename;
|
return filename;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/* todo_task_save */
|
||||||
|
static void _todo_task_save(Todo * todo, GtkTreeIter * iter)
|
||||||
|
{
|
||||||
|
GtkTreeModel * model = GTK_TREE_MODEL(todo->store);
|
||||||
|
Task * task;
|
||||||
|
gboolean done;
|
||||||
|
|
||||||
|
gtk_tree_model_get(model, iter, TD_COL_TASK, &task,
|
||||||
|
TD_COL_DONE, &done, -1);
|
||||||
|
task_set_done(task, done);
|
||||||
|
task_save(task);
|
||||||
|
}
|
||||||
|
|
Loading…
Reference in New Issue
Block a user