Tasks now have their beginning date

This commit is contained in:
Pierre Pronchery 2010-07-17 19:56:52 +00:00
parent e1f56a618d
commit 18f160e97e
4 changed files with 45 additions and 4 deletions

View File

@ -16,6 +16,7 @@
#include <unistd.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <System.h>
@ -55,6 +56,7 @@ Task * task_new(void)
task_delete(task);
return NULL;
}
task_set_start(task, time(NULL));
return task;
}
@ -108,6 +110,17 @@ char const * task_get_priority(Task * task)
}
/* task_get_start */
time_t task_get_start(Task * task)
{
char const * start;
if((start = config_get(task->config, NULL, "start")) == NULL)
return 0;
return atoi(start);
}
/* task_get_title */
char const * task_get_title(Task * task)
{
@ -128,7 +141,7 @@ int task_set_filename(Task * task, char const * filename)
char * p;
if((p = strdup(filename)) == NULL)
return 1; /* XXX set error */
return -1; /* XXX set error */
free(task->filename);
task->filename = p;
return 0;
@ -142,6 +155,16 @@ int task_set_priority(Task * task, char const * priority)
}
/* task_set_start */
int task_set_start(Task * task, time_t start)
{
char buf[16];
snprintf(buf, sizeof(buf), "%u", start);
return config_set(task->config, NULL, "start", buf);
}
/* task_set_title */
int task_set_title(Task * task, char const * title)
{
@ -162,7 +185,7 @@ int task_load(Task * task)
int task_save(Task * task)
{
if(task->filename == NULL)
return 1; /* XXX set error */
return -1; /* XXX set error */
return config_save(task->config, task->filename);
}
@ -171,7 +194,7 @@ int task_save(Task * task)
int task_unlink(Task * task)
{
if(task->filename == NULL)
return 1; /* XXX set error */
return -1; /* XXX set error */
return unlink(task->filename);
}

View File

@ -18,6 +18,8 @@
#ifndef TODO_TASK_H
# define TODO_TASK_H
# include <time.h>
/* Task */
/* types */
@ -34,11 +36,13 @@ void task_delete(Task * task);
int task_get_done(Task * task);
char const * task_get_filename(Task * task);
char const * task_get_priority(Task * task);
time_t task_get_start(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_priority(Task * task, char const * priority);
int task_set_start(Task * task, time_t start);
int task_set_title(Task * task, char const * title);

View File

@ -21,7 +21,9 @@ static char const _license[] =
#include <dirent.h>
#include <unistd.h>
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#include <time.h>
#include <errno.h>
#include <libintl.h>
#include <gtk/gtk.h>
@ -84,6 +86,7 @@ static struct
{ TODO_PRIORITY_LOW, N_("Low") },
{ TODO_PRIORITY_MEDIUM, N_("Medium") },
{ TODO_PRIORITY_HIGH, N_("High") },
{ TODO_PRIORITY_URGENT, N_("Urgent") },
{ 0, NULL }
};
@ -369,6 +372,9 @@ Task * todo_task_add(Todo * todo, Task * task)
{
GtkTreeIter iter;
char * filename;
time_t start;
struct tm t;
char beginning[32] = "";
char const * priority;
TodoPriority tp = TODO_PRIORITY_UNKNOWN;
size_t i;
@ -388,6 +394,11 @@ Task * todo_task_add(Todo * todo, Task * task)
task_set_title(task, _("New task"));
}
gtk_list_store_insert(todo->store, &iter, 0);
if((start = task_get_start(task)) != 0)
{
localtime_r(&start, &t);
strftime(beginning, sizeof(beginning), "%c", &t);
}
priority = task_get_priority(task);
for(i = 0; priority != NULL && _todo_priorities[i].title != NULL; i++)
if(strcmp(_(_todo_priorities[i].title), priority) == 0)
@ -398,6 +409,8 @@ Task * todo_task_add(Todo * todo, 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),
TD_COL_START, start,
TD_COL_DISPLAY_START, beginning,
TD_COL_PRIORITY, tp,
TD_COL_DISPLAY_PRIORITY, priority, -1);
return task;

View File

@ -31,7 +31,8 @@ typedef enum _TodoPriority
TODO_PRIORITY_UNKNOWN,
TODO_PRIORITY_LOW,
TODO_PRIORITY_MEDIUM,
TODO_PRIORITY_HIGH
TODO_PRIORITY_HIGH,
TODO_PRIORITY_URGENT
} TodoPriority;