From e3ac5542aa1be85ae1116eea44142f85c80b4a34 Mon Sep 17 00:00:00 2001
From: Lukas Fleischer <lfleischer@calcurse.org>
Date: Sun, 17 Jan 2016 22:54:12 +0100
Subject: Support todo items with an undefined priority

In addition to priorities 1-9, support todo items without any specific
priority, internally represented by priority 0.

Signed-off-by: Lukas Fleischer <lfleischer@calcurse.org>
---
 src/ical.c    | 13 ++++---------
 src/ui-todo.c |  8 ++++----
 2 files changed, 8 insertions(+), 13 deletions(-)

(limited to 'src')

diff --git a/src/ical.c b/src/ical.c
index dfb5dd7..b440dea 100644
--- a/src/ical.c
+++ b/src/ical.c
@@ -1054,11 +1054,10 @@ ical_read_todo(FILE * fdi, FILE * log, int list, unsigned *notodos,
 	       unsigned *noskipped, char *buf, char *lstore,
 	       unsigned *lineno)
 {
-	const int LOWEST = 9;
 	const int ITEMLINE = *lineno;
 	struct {
 		char *mesg, *note;
-		int has_priority, priority;
+		int priority;
 		int completed;
 	} vtodo;
 	int skip_alarm;
@@ -1077,8 +1076,6 @@ ical_read_todo(FILE * fdi, FILE * log, int list, unsigned *notodos,
 		}
 
 		if (starts_with_ci(buf, "END:VTODO")) {
-			if (!vtodo.has_priority)
-				vtodo.priority = LOWEST;
 			if (!vtodo.mesg) {
 				ical_log(log, ICAL_VTODO, ITEMLINE,
 					 _("could not retrieve item summary."));
@@ -1093,12 +1090,10 @@ ical_read_todo(FILE * fdi, FILE * log, int list, unsigned *notodos,
 
 		if (starts_with_ci(buf, "PRIORITY:")) {
 			sscanf(buf, "%d", &vtodo.priority);
-			if (vtodo.priority >= 1 && vtodo.priority <= 9) {
-				vtodo.has_priority = 1;
-			} else {
+			if (vtodo.priority < 0 || vtodo.priority > 9) {
 				ical_log(log, ICAL_VTODO, ITEMLINE,
-					 _("item priority is not acceptable "
-					  "(must be between 1 and 9)."));
+					 _("item priority is invalid "
+					  "(must be between 0 and 9)."));
 			}
 		} else if (starts_with_ci(buf, "STATUS:COMPLETED")) {
 			vtodo.completed = 1;
diff --git a/src/ui-todo.c b/src/ui-todo.c
index 2a03844..de19272 100644
--- a/src/ui-todo.c
+++ b/src/ui-todo.c
@@ -50,13 +50,13 @@ void ui_todo_add(void)
 	int ch = 0;
 	const char *mesg = _("Enter the new TODO item:");
 	const char *mesg_id =
-	    _("Enter the TODO priority [1 (highest) - 9 (lowest)]:");
+	    _("Enter the TODO priority [0 (none), 1 (highest) - 9 (lowest)]:");
 	char todo_input[BUFSIZ] = "";
 
 	status_mesg(mesg, "");
 	if (getstring(win[STA].p, todo_input, BUFSIZ, 0, 1) ==
 	    GETSTRING_VALID) {
-		while ((ch < '1') || (ch > '9')) {
+		while ((ch < '0') || (ch > '9')) {
 			status_mesg(mesg_id, "");
 			ch = wgetch(win[KEY].p);
 		}
@@ -259,8 +259,8 @@ void ui_todo_chg_priority(int diff)
 	int id = item->id + diff;
 	struct todo *item_new;
 
-	if (id < 1)
-		id = 1;
+	if (id < 0)
+		id = 0;
 	else if (id > 9)
 		id = 9;
 
-- 
cgit v1.2.3-70-g09d2