Implemented priorities
This commit is contained in:
parent
e0b3d8a009
commit
d779c99614
@ -156,6 +156,19 @@ void on_task_done_toggled(GtkCellRendererToggle * renderer, gchar * path,
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/* on_task_priority_edited */
|
||||||
|
void on_task_priority_edited(GtkCellRendererText * renderer, gchar * path,
|
||||||
|
gchar * priority, gpointer data)
|
||||||
|
{
|
||||||
|
Todo * todo = data;
|
||||||
|
GtkTreePath * treepath;
|
||||||
|
|
||||||
|
treepath = gtk_tree_path_new_from_string(path);
|
||||||
|
todo_task_set_priority(todo, treepath, priority);
|
||||||
|
gtk_tree_path_free(treepath);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/* on_task_title_edited */
|
/* on_task_title_edited */
|
||||||
void on_task_title_edited(GtkCellRendererText * renderer, gchar * path,
|
void on_task_title_edited(GtkCellRendererText * renderer, gchar * path,
|
||||||
gchar * title, gpointer data)
|
gchar * title, gpointer data)
|
||||||
|
@ -48,6 +48,8 @@ void on_preferences(gpointer data);
|
|||||||
/* view */
|
/* view */
|
||||||
void on_task_done_toggled(GtkCellRendererToggle * renderer, gchar * path,
|
void on_task_done_toggled(GtkCellRendererToggle * renderer, gchar * path,
|
||||||
gpointer data);
|
gpointer data);
|
||||||
|
void on_task_priority_edited(GtkCellRendererText * renderer, gchar * path,
|
||||||
|
gchar * priority, gpointer data);
|
||||||
void on_task_title_edited(GtkCellRendererText * renderer, gchar * path,
|
void on_task_title_edited(GtkCellRendererText * renderer, gchar * path,
|
||||||
gchar * title, gpointer data);
|
gchar * title, gpointer data);
|
||||||
|
|
||||||
|
14
src/task.c
14
src/task.c
@ -101,6 +101,13 @@ char const * task_get_filename(Task * task)
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/* task_get_priority */
|
||||||
|
char const * task_get_priority(Task * task)
|
||||||
|
{
|
||||||
|
return config_get(task->config, NULL, "priority");
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/* task_get_title */
|
/* task_get_title */
|
||||||
char const * task_get_title(Task * task)
|
char const * task_get_title(Task * task)
|
||||||
{
|
{
|
||||||
@ -128,6 +135,13 @@ int task_set_filename(Task * task, char const * filename)
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/* task_set_priority */
|
||||||
|
int task_set_priority(Task * task, char const * priority)
|
||||||
|
{
|
||||||
|
return config_set(task->config, NULL, "priority", priority);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/* task_set_title */
|
/* task_set_title */
|
||||||
int task_set_title(Task * task, char const * title)
|
int task_set_title(Task * task, char const * title)
|
||||||
{
|
{
|
||||||
|
@ -33,10 +33,12 @@ void task_delete(Task * task);
|
|||||||
/* accessors */
|
/* accessors */
|
||||||
int task_get_done(Task * task);
|
int task_get_done(Task * task);
|
||||||
char const * task_get_filename(Task * task);
|
char const * task_get_filename(Task * task);
|
||||||
|
char const * task_get_priority(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_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_priority(Task * task, char const * priority);
|
||||||
int task_set_title(Task * task, char const * title);
|
int task_set_title(Task * task, char const * title);
|
||||||
|
|
||||||
|
|
||||||
|
60
src/todo.c
60
src/todo.c
@ -43,6 +43,7 @@ struct _Todo
|
|||||||
GtkWidget * window;
|
GtkWidget * window;
|
||||||
GtkWidget * scrolled;
|
GtkWidget * scrolled;
|
||||||
GtkListStore * store;
|
GtkListStore * store;
|
||||||
|
GtkListStore * priorities;
|
||||||
GtkWidget * view;
|
GtkWidget * view;
|
||||||
GtkWidget * statusbar;
|
GtkWidget * statusbar;
|
||||||
GtkWidget * about;
|
GtkWidget * about;
|
||||||
@ -52,7 +53,7 @@ struct _Todo
|
|||||||
/* constants */
|
/* constants */
|
||||||
enum { TD_COL_TASK, TD_COL_DONE, TD_COL_TITLE, TD_COL_START,
|
enum { TD_COL_TASK, TD_COL_DONE, TD_COL_TITLE, TD_COL_START,
|
||||||
TD_COL_DISPLAY_START, TD_COL_END, TD_COL_DISPLAY_END, TD_COL_PRIORITY,
|
TD_COL_DISPLAY_START, TD_COL_END, TD_COL_DISPLAY_END, TD_COL_PRIORITY,
|
||||||
TD_COL_DISPLAY_PRIORITY, TD_COL_CATEGORY };
|
TD_COL_CATEGORY };
|
||||||
#define TD_COL_LAST TD_COL_CATEGORY
|
#define TD_COL_LAST TD_COL_CATEGORY
|
||||||
#define TD_NUM_COLS (TD_COL_LAST + 1)
|
#define TD_NUM_COLS (TD_COL_LAST + 1)
|
||||||
|
|
||||||
@ -70,10 +71,22 @@ static struct
|
|||||||
on_task_title_edited) },
|
on_task_title_edited) },
|
||||||
{ TD_COL_DISPLAY_START, N_("Beginning"), TD_COL_START, NULL },
|
{ TD_COL_DISPLAY_START, N_("Beginning"), TD_COL_START, NULL },
|
||||||
{ TD_COL_DISPLAY_END, N_("Completion"), TD_COL_END, NULL },
|
{ TD_COL_DISPLAY_END, N_("Completion"), TD_COL_END, NULL },
|
||||||
{ TD_COL_DISPLAY_PRIORITY, N_("Priority"), TD_COL_PRIORITY, NULL },
|
|
||||||
{ 0, NULL, 0, NULL }
|
{ 0, NULL, 0, NULL }
|
||||||
};
|
};
|
||||||
|
|
||||||
|
static struct
|
||||||
|
{
|
||||||
|
unsigned int priority;
|
||||||
|
char const * title;
|
||||||
|
} _todo_priorities[] =
|
||||||
|
{
|
||||||
|
{ TODO_PRIORITY_UNKNOWN,N_("Unknown") },
|
||||||
|
{ TODO_PRIORITY_LOW, N_("Low") },
|
||||||
|
{ TODO_PRIORITY_MEDIUM, N_("Medium") },
|
||||||
|
{ TODO_PRIORITY_HIGH, N_("High") },
|
||||||
|
{ 0, NULL }
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
/* variables */
|
/* variables */
|
||||||
static char const * _authors[] =
|
static char const * _authors[] =
|
||||||
@ -214,8 +227,9 @@ Todo * todo_new(void)
|
|||||||
|
|
||||||
static void _new_view(Todo * todo)
|
static void _new_view(Todo * todo)
|
||||||
{
|
{
|
||||||
GtkTreeSelection * sel;
|
|
||||||
size_t i;
|
size_t i;
|
||||||
|
GtkTreeIter iter;
|
||||||
|
GtkTreeSelection * sel;
|
||||||
GtkCellRenderer * renderer;
|
GtkCellRenderer * renderer;
|
||||||
GtkTreeViewColumn * column;
|
GtkTreeViewColumn * column;
|
||||||
|
|
||||||
@ -227,9 +241,16 @@ static void _new_view(Todo * todo)
|
|||||||
G_TYPE_STRING, /* display start */
|
G_TYPE_STRING, /* display start */
|
||||||
G_TYPE_UINT, /* end */
|
G_TYPE_UINT, /* end */
|
||||||
G_TYPE_STRING, /* display end */
|
G_TYPE_STRING, /* display end */
|
||||||
G_TYPE_UINT, /* priority */
|
G_TYPE_STRING, /* priority */
|
||||||
G_TYPE_STRING, /* display priority */
|
|
||||||
G_TYPE_STRING); /* category */
|
G_TYPE_STRING); /* category */
|
||||||
|
todo->priorities = gtk_list_store_new(2, G_TYPE_UINT, G_TYPE_STRING);
|
||||||
|
for(i = 0; _todo_priorities[i].title != NULL; i++)
|
||||||
|
{
|
||||||
|
gtk_list_store_append(todo->priorities, &iter);
|
||||||
|
gtk_list_store_set(todo->priorities, &iter,
|
||||||
|
0, _todo_priorities[i].priority,
|
||||||
|
1, _todo_priorities[i].title, -1);
|
||||||
|
}
|
||||||
todo->view = gtk_tree_view_new_with_model(GTK_TREE_MODEL(todo->store));
|
todo->view = gtk_tree_view_new_with_model(GTK_TREE_MODEL(todo->store));
|
||||||
if((sel = gtk_tree_view_get_selection(GTK_TREE_VIEW(todo->view)))
|
if((sel = gtk_tree_view_get_selection(GTK_TREE_VIEW(todo->view)))
|
||||||
!= NULL)
|
!= NULL)
|
||||||
@ -265,7 +286,18 @@ static void _new_view(Todo * todo)
|
|||||||
_todo_columns[i].sort);
|
_todo_columns[i].sort);
|
||||||
gtk_tree_view_append_column(GTK_TREE_VIEW(todo->view), column);
|
gtk_tree_view_append_column(GTK_TREE_VIEW(todo->view), column);
|
||||||
}
|
}
|
||||||
|
/* priority column */
|
||||||
|
renderer = gtk_cell_renderer_combo_new();
|
||||||
|
g_object_set(renderer, "model", todo->priorities,
|
||||||
|
"text-column", 1,
|
||||||
|
"editable", TRUE, NULL);
|
||||||
|
g_signal_connect(renderer, "edited", G_CALLBACK(
|
||||||
|
on_task_priority_edited), todo);
|
||||||
|
column = gtk_tree_view_column_new_with_attributes(_("Priority"),
|
||||||
|
renderer, "text", TD_COL_PRIORITY, NULL);
|
||||||
|
gtk_tree_view_column_set_sort_column_id(column, TD_COL_PRIORITY);
|
||||||
gtk_container_add(GTK_CONTAINER(todo->scrolled), todo->view);
|
gtk_container_add(GTK_CONTAINER(todo->scrolled), todo->view);
|
||||||
|
gtk_tree_view_append_column(GTK_TREE_VIEW(todo->view), column);
|
||||||
}
|
}
|
||||||
|
|
||||||
static gboolean _new_idle(gpointer data)
|
static gboolean _new_idle(gpointer data)
|
||||||
@ -349,7 +381,8 @@ 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_DONE, task_get_done(task) > 0 ? TRUE : FALSE,
|
||||||
TD_COL_TITLE, task_get_title(task), -1);
|
TD_COL_TITLE, task_get_title(task),
|
||||||
|
TD_COL_PRIORITY, task_get_priority(task), -1);
|
||||||
return task;
|
return task;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -498,6 +531,21 @@ void todo_task_select_all(Todo * todo)
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/* todo_task_set_priority */
|
||||||
|
void todo_task_set_priority(Todo * todo, GtkTreePath * path,
|
||||||
|
char const * priority)
|
||||||
|
{
|
||||||
|
GtkTreeModel * model = GTK_TREE_MODEL(todo->store);
|
||||||
|
GtkTreeIter iter;
|
||||||
|
Task * task;
|
||||||
|
|
||||||
|
gtk_tree_model_get_iter(model, &iter, path);
|
||||||
|
gtk_tree_model_get(model, &iter, TD_COL_TASK, &task, -1);
|
||||||
|
task_set_priority(task, priority);
|
||||||
|
gtk_list_store_set(todo->store, &iter, TD_COL_PRIORITY, priority, -1);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/* todo_task_set_title */
|
/* todo_task_set_title */
|
||||||
void todo_task_set_title(Todo * todo, GtkTreePath * path, char const * title)
|
void todo_task_set_title(Todo * todo, GtkTreePath * path, char const * title)
|
||||||
{
|
{
|
||||||
|
10
src/todo.h
10
src/todo.h
@ -26,6 +26,14 @@
|
|||||||
/* types */
|
/* types */
|
||||||
typedef struct _Todo Todo;
|
typedef struct _Todo Todo;
|
||||||
|
|
||||||
|
typedef enum _TodoPriority
|
||||||
|
{
|
||||||
|
TODO_PRIORITY_UNKNOWN,
|
||||||
|
TODO_PRIORITY_LOW,
|
||||||
|
TODO_PRIORITY_MEDIUM,
|
||||||
|
TODO_PRIORITY_HIGH
|
||||||
|
} TodoPriority;
|
||||||
|
|
||||||
|
|
||||||
/* functions */
|
/* functions */
|
||||||
Todo * todo_new(void);
|
Todo * todo_new(void);
|
||||||
@ -41,6 +49,8 @@ void todo_task_delete_selected(Todo * todo);
|
|||||||
void todo_task_remove_all(Todo * todo);
|
void todo_task_remove_all(Todo * todo);
|
||||||
|
|
||||||
/* accessors */
|
/* accessors */
|
||||||
|
void todo_task_set_priority(Todo * todo, GtkTreePath * path,
|
||||||
|
char const * priority);
|
||||||
void todo_task_set_title(Todo * todo, GtkTreePath * path, char const * title);
|
void todo_task_set_title(Todo * todo, GtkTreePath * path, char const * title);
|
||||||
|
|
||||||
void todo_task_edit(Todo * todo);
|
void todo_task_edit(Todo * todo);
|
||||||
|
Loading…
Reference in New Issue
Block a user