diff options
3 files changed, 82 insertions, 17 deletions
diff --git a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/tasks/ITask.java b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/tasks/ITask.java index 7380741d2..91ba7e260 100644 --- a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/tasks/ITask.java +++ b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/tasks/ITask.java @@ -94,4 +94,6 @@ public interface ITask extends Serializable { public abstract void setCategory(TaskCategory cat); public abstract TaskCategory getCategory(); + + public abstract String getElapsedTimeForDisplay(); }
\ No newline at end of file diff --git a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/tasks/Task.java b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/tasks/Task.java index f42af515b..79c4e3692 100644 --- a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/tasks/Task.java +++ b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/tasks/Task.java @@ -48,12 +48,12 @@ public class Task implements ITask, ITaskListElement { private String priority = "P3"; private String notes = ""; private String estimatedTime = ""; - private String elapsedTime = ""; +// private String elapsedTime = ""; private boolean completed; private RelatedLinks links = new RelatedLinks(); private TaskCategory parentCategory = null; - private Date activeStart = null; + private Date timeActivated = null; private long elapsed; /** * null if root @@ -114,21 +114,24 @@ public class Task implements ITask, ITaskListElement { * Package visible in order to prevent sets that don't update the index. */ public void setActive(boolean active) { + this.active = active; if (active) { - activeStart = new Date(); + timeActivated = new Date(); } else { calculateElapsedTime(); - activeStart = null; - } - this.active = active; + timeActivated = null; + } } private void calculateElapsedTime() { - if (activeStart == null) + if (timeActivated == null) return; - long elapsedMin = new Date().getTime() - activeStart.getTime(); - long min = 1000*60; - this.elapsed += elapsedMin / min; + elapsed += new Date().getTime() - timeActivated.getTime(); + if (isActive()) { + timeActivated = new Date(); + } else { + timeActivated = null; + } } public boolean isActive() { @@ -256,15 +259,18 @@ public class Task implements ITask, ITaskListElement { } public String getElapsedTime() { - if (elapsedTime == "" && activeStart != null) { - calculateElapsedTime(); - + if (isActive()) { + calculateElapsedTime(); } - return elapsedTime; + return "" + elapsed; } - public void setElapsedTime(String elapsed) { - this.elapsedTime = elapsed; + public void setElapsedTime(String elapsedString) { + if (elapsedString.equals("")) { + elapsed = 0; + } else { + elapsed = Long.parseLong(elapsedString); + } } public String getEstimatedTime() { @@ -313,4 +319,61 @@ public class Task implements ITask, ITaskListElement { return MylarImages.getImage(MylarImages.TASK_INACTIVE); } } + + public String getElapsedTimeForDisplay() { + long seconds = elapsed / 1000; + long minutes = 0; + long hours = 0; +// final long SECOND = 1000; + final long MIN = 60; + final long HOUR = MIN * 60; + + String hour = ""; + String min = ""; + String sec = ""; + if (seconds >= HOUR) { + hours = seconds / HOUR; + if (hours == 1) { + hour = hours + " hour "; + } else if (hours > 1) { + hour = hours + " hours "; + } + seconds -= hours * HOUR; + + minutes = seconds / MIN; + if (minutes == 1) { + min = minutes + " minute "; + } else if (minutes > 1) { + min = minutes + " minutes "; + } +// seconds -= minutes * MIN; +// if (seconds == 1) { +// sec = seconds + " second"; +// } else if (seconds > 1) { +// sec = seconds + " seconds"; +// } + return hour + min + sec; + } else if (seconds >= MIN) { + minutes = seconds / MIN; + if (minutes == 1) { + min = minutes + " minute "; + } else if (minutes > 1) { + min = minutes + " minutes "; + } +// seconds -= minutes * MIN; +// if (seconds == 1) { +// sec = seconds + " second"; +// } else if (seconds > 1) { +// sec = seconds + " seconds"; +// } + return min + sec; + } else { +// if (seconds == 1) { +// sec = seconds + " second"; +// } else if (seconds > 1) { +// sec = seconds + " seconds"; +// } + return sec; + } + } } diff --git a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/tasks/ui/TaskSummaryEditor.java b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/tasks/ui/TaskSummaryEditor.java index bddddb259..7ab14f26b 100644 --- a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/tasks/ui/TaskSummaryEditor.java +++ b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/tasks/ui/TaskSummaryEditor.java @@ -422,7 +422,7 @@ public class TaskSummaryEditor extends EditorPart { l = toolkit.createLabel(container, "Elapsed Time:"); l.setForeground(toolkit.getColors().getColor(FormColors.TITLE)); - Text text2 = toolkit.createText(container,task.getElapsedTime(), SWT.BORDER); + Text text2 = toolkit.createText(container,task.getElapsedTimeForDisplay(), SWT.BORDER); text2.setLayoutData(new TableWrapData(TableWrapData.FILL_GRAB)); text2.setEditable(false); text2.setEnabled(false); |