|
From: <pa...@us...> - 2008-07-24 17:57:32
|
Revision: 527
http://osmo-pim.svn.sourceforge.net/osmo-pim/?rev=527&view=rev
Author: pasp
Date: 2008-07-24 17:57:41 +0000 (Thu, 24 Jul 2008)
Log Message:
-----------
* Remember done task date
Modified Paths:
--------------
trunk/src/gui.h
trunk/src/tasks.c
trunk/src/tasks.h
trunk/src/tasks_items.c
Modified: trunk/src/gui.h
===================================================================
--- trunk/src/gui.h 2008-07-23 16:10:51 UTC (rev 526)
+++ trunk/src/gui.h 2008-07-24 17:57:41 UTC (rev 527)
@@ -75,6 +75,7 @@
TA_COLUMN_DUE_DATE_JULIAN,
TA_COLUMN_DUE_TIME,
TA_COLUMN_START_DATE_JULIAN,
+ TA_COLUMN_DONE_DATE_JULIAN,
TA_COLUMN_PRIORITY,
TA_COLUMN_CATEGORY,
TA_COLUMN_SUMMARY,
Modified: trunk/src/tasks.c
===================================================================
--- trunk/src/tasks.c 2008-07-23 16:10:51 UTC (rev 526)
+++ trunk/src/tasks.c 2008-07-24 17:57:41 UTC (rev 527)
@@ -323,7 +323,7 @@
GtkTextBuffer *text_buffer;
GtkTextChildAnchor *anchor;
GtkWidget *hseparator;
-guint32 start_date_julian, due_date_julian;
+guint32 start_date_julian, done_date_julian, due_date_julian;
gint due_time;
gchar tmpbuf[BUFFER_SIZE];
gboolean repeat, prev_state, next_state;
@@ -341,6 +341,7 @@
gtk_tree_model_get (model, &iter, TA_COLUMN_DESCRIPTION, &text,
TA_COLUMN_DUE_DATE_JULIAN, &due_date_julian,
TA_COLUMN_START_DATE_JULIAN, &start_date_julian,
+ TA_COLUMN_DONE_DATE_JULIAN, &done_date_julian,
TA_COLUMN_DUE_TIME, &due_time,
TA_COLUMN_REPEAT, &repeat, -1);
@@ -354,7 +355,8 @@
gtk_widget_set_sensitive (gtk_ui_manager_get_widget (appGUI->tsk->tasks_uim_widget, "/toolbar/prev_day"), prev_state);
gtk_widget_set_sensitive (gtk_ui_manager_get_widget (appGUI->tsk->tasks_uim_widget, "/toolbar/next_day"), next_state);
- g_snprintf (tmpbuf, BUFFER_SIZE, "\n%s: %s\n", _("Started"), julian_to_str (start_date_julian, DATE_FULL));
+ g_snprintf (tmpbuf, BUFFER_SIZE, "\n%s: %s\n",
+ _("Started"), julian_to_str (start_date_julian, DATE_FULL));
if (text != NULL) {
gtk_text_buffer_insert_with_tags_by_name (text_buffer, &titer, text, -1,
@@ -367,11 +369,18 @@
anchor = gtk_text_buffer_create_child_anchor (text_buffer, &titer);
gtk_text_buffer_insert_with_tags_by_name (text_buffer, &titer, tmpbuf, -1,
"italic", NULL);
+ if (done_date_julian != 0) {
+ g_snprintf (tmpbuf, BUFFER_SIZE, "%s: %s\n",
+ _("Finished"), julian_to_str (done_date_julian, DATE_FULL));
+ gtk_text_buffer_insert_with_tags_by_name (text_buffer, &titer, tmpbuf, -1,
+ "italic", NULL);
+ }
+
gtk_text_view_set_buffer(GTK_TEXT_VIEW(appGUI->tsk->tasks_desc_textview), text_buffer);
hseparator = gtk_hseparator_new ();
gtk_widget_show (hseparator);
- gtk_widget_set_size_request (hseparator, 240, -1);
+ gtk_widget_set_size_request (hseparator, 320, -1);
gtk_text_view_add_child_at_anchor (GTK_TEXT_VIEW(appGUI->tsk->tasks_desc_textview), hseparator, anchor);
}
@@ -476,6 +485,7 @@
GtkTreePath *sort_path, *filter_path, *path;
GtkTreeIter iter;
gboolean done_status;
+guint32 done_date;
GtkTreeModel *model;
GUI *appGUI = (GUI *) user_data;
@@ -492,8 +502,17 @@
if (path != NULL) {
gtk_tree_model_get_iter (model, &iter, path); /* get toggled iter */
gtk_tree_model_get (model, &iter, TA_COLUMN_DONE, &done_status, -1);
- gtk_list_store_set (GTK_LIST_STORE (model), &iter, TA_COLUMN_DONE, !done_status, -1);
+ if (done_status == FALSE) {
+ done_date = get_julian_for_today();
+ } else {
+ done_date = 0;
+ }
+
+ gtk_list_store_set (GTK_LIST_STORE (model), &iter,
+ TA_COLUMN_DONE, !done_status,
+ TA_COLUMN_DONE_DATE_JULIAN, done_date, -1);
+
if (done_status == FALSE && config.delete_completed) {
gtk_list_store_remove (GTK_LIST_STORE (model), &iter);
}
@@ -672,6 +691,7 @@
gtk_list_store_set (appGUI->tsk->tasks_list_store, &iter, TA_COLUMN_DONE, item->done,
TA_COLUMN_DUE_DATE_JULIAN, item->due_date_julian,
TA_COLUMN_START_DATE_JULIAN, item->start_date_julian,
+ TA_COLUMN_DONE_DATE_JULIAN, item->done_date_julian,
TA_COLUMN_DUE_TIME, item->due_time,
TA_COLUMN_PRIORITY, item->priority, TA_COLUMN_CATEGORY, item->category,
TA_COLUMN_SUMMARY, item->summary, TA_COLUMN_DESCRIPTION, item->desc,
@@ -1126,7 +1146,7 @@
appGUI->tsk->tasks_list_store = gtk_list_store_new (TASKS_NUM_COLUMNS,
G_TYPE_BOOLEAN, GDK_TYPE_PIXBUF, G_TYPE_STRING, G_TYPE_UINT, G_TYPE_INT,
- G_TYPE_UINT, G_TYPE_STRING, G_TYPE_STRING, G_TYPE_STRING,
+ G_TYPE_UINT, G_TYPE_UINT, G_TYPE_STRING, G_TYPE_STRING, G_TYPE_STRING,
G_TYPE_STRING, G_TYPE_STRING, G_TYPE_UINT, G_TYPE_BOOLEAN,
G_TYPE_BOOLEAN, G_TYPE_BOOLEAN, G_TYPE_BOOLEAN, G_TYPE_INT,
G_TYPE_INT, G_TYPE_INT, G_TYPE_INT, G_TYPE_INT, G_TYPE_INT, G_TYPE_INT,
@@ -1217,6 +1237,17 @@
gtk_tree_view_append_column(GTK_TREE_VIEW(appGUI->tsk->tasks_list), appGUI->tsk->tasks_columns[TA_COLUMN_START_DATE_JULIAN]);
renderer = gtk_cell_renderer_text_new();
+ appGUI->tsk->tasks_columns[TA_COLUMN_DONE_DATE_JULIAN] = gtk_tree_view_column_new_with_attributes(NULL,
+ renderer,
+ "text", TA_COLUMN_DONE_DATE_JULIAN,
+ "strikethrough", TA_COLUMN_DONE,
+ "foreground", TA_COLUMN_COLOR,
+ "weight", TA_COLUMN_BOLD,
+ NULL);
+ gtk_tree_view_column_set_visible (appGUI->tsk->tasks_columns[TA_COLUMN_DONE_DATE_JULIAN], FALSE);
+ gtk_tree_view_append_column(GTK_TREE_VIEW(appGUI->tsk->tasks_list), appGUI->tsk->tasks_columns[TA_COLUMN_DONE_DATE_JULIAN]);
+
+ renderer = gtk_cell_renderer_text_new();
appGUI->tsk->tasks_columns[TA_COLUMN_PRIORITY] = gtk_tree_view_column_new_with_attributes(_("Priority"),
renderer,
"text", TA_COLUMN_PRIORITY,
Modified: trunk/src/tasks.h
===================================================================
--- trunk/src/tasks.h 2008-07-23 16:10:51 UTC (rev 526)
+++ trunk/src/tasks.h 2008-07-24 17:57:41 UTC (rev 527)
@@ -39,6 +39,7 @@
guint32 due_date_julian;
gint due_time;
guint32 start_date_julian;
+ guint32 done_date_julian;
gchar *priority;
gchar *category;
gchar *summary;
Modified: trunk/src/tasks_items.c
===================================================================
--- trunk/src/tasks_items.c 2008-07-23 16:10:51 UTC (rev 526)
+++ trunk/src/tasks_items.c 2008-07-24 17:57:41 UTC (rev 527)
@@ -70,6 +70,7 @@
TA_COLUMN_DUE_DATE_JULIAN, &(item->due_date_julian),
TA_COLUMN_DUE_TIME, &(item->due_time),
TA_COLUMN_START_DATE_JULIAN, &(item->start_date_julian),
+ TA_COLUMN_DONE_DATE_JULIAN, &(item->done_date_julian),
TA_COLUMN_ACTIVE, &(item->active),
TA_COLUMN_ACTIVE_WARNING, &(item->active_warning),
TA_COLUMN_OFFLINE_IGNORE, &(item->offline_ignore),
@@ -253,6 +254,8 @@
return;
}
+ item->done_date_julian = 0;
+
add_item_to_list (item, appGUI);
gui_systray_tooltip_update(appGUI);
@@ -1667,6 +1670,7 @@
item->due_date_julian = 0;
item->due_time = -1;
item->start_date_julian = 0;
+ item->done_date_julian = 0;
item->priority = NULL;
item->category = NULL;
item->summary = NULL;
@@ -1702,6 +1706,13 @@
xmlFree(key);
}
}
+ if ((!xmlStrcmp(cnode->name, (const xmlChar *) "done_date"))) {
+ key = xmlNodeListGetString(doc, cnode->xmlChildrenNode, 1);
+ if (key != NULL) {
+ sscanf((gchar *) key, "%d", &(item->done_date_julian));
+ xmlFree(key);
+ }
+ }
if ((!xmlStrcmp(cnode->name, (const xmlChar *) "active"))) {
key = xmlNodeListGetString(doc, cnode->xmlChildrenNode, 1);
if (key != NULL) {
@@ -1943,6 +1954,9 @@
g_snprintf (temp, BUFFER_SIZE, "%d", (guint32) item->start_date_julian);
xmlNewChild (note_node, NULL, (const xmlChar *) "start_date", (xmlChar *) temp);
+ g_snprintf (temp, BUFFER_SIZE, "%d", (guint32) item->done_date_julian);
+ xmlNewChild (note_node, NULL, (const xmlChar *) "done_date", (xmlChar *) temp);
+
g_snprintf (temp, BUFFER_SIZE, "%d", (gint) item->active);
xmlNewChild (note_node, NULL, (const xmlChar *) "active", (xmlChar *) temp);
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|