@@ -8,6 +8,9 @@ import kotlin.math.min
88 * Manages a list of tasks and provides convenient access methods.
99 */
1010class GanttChartData {
11+ private var mMaxTime = 0f
12+ private var mMinTime = 0f
13+
1114 /* *
1215 * Get all tasks.
1316 *
@@ -22,6 +25,27 @@ class GanttChartData {
2225 */
2326 fun addTask (task : GanttTask ? ) {
2427 tasks.add(task!! )
28+ mMinTime = calcMinTime()
29+ mMaxTime = calcMaxTime()
30+ }
31+
32+ private fun calcMaxTime (): Float {
33+ if (tasks.isEmpty())
34+ return 100f
35+ var max = 0f
36+ for (task in tasks) {
37+ max = max(max, task.endTime)
38+ }
39+ return max
40+ }
41+
42+ private fun calcMinTime (): Float {
43+ if (tasks.isEmpty()) return 0f
44+ var min = Float .MAX_VALUE
45+ for (task in tasks) {
46+ min = min(min, task.startTime)
47+ }
48+ return min
2549 }
2650
2751 /* *
@@ -31,6 +55,8 @@ class GanttChartData {
3155 */
3256 fun addTasks (taskList : MutableList <GanttTask >) {
3357 tasks.addAll(taskList)
58+ mMinTime = calcMinTime()
59+ mMaxTime = calcMaxTime()
3460 }
3561
3662 /* *
@@ -56,35 +82,29 @@ class GanttChartData {
5682 *
5783 * @return Minimum start time
5884 */
59- val minTime: Float
60- get() {
61- if (tasks.isEmpty()) return 0f
62- var min = Float .MAX_VALUE
63- for (task in tasks) {
64- min = min(min, task.startTime)
65- }
66- return min
85+ var minTime: Float
86+ get() = mMinTime
87+ set(value) {
88+ mMinTime = value
6789 }
6890
6991 /* *
7092 * Get the latest end time across all tasks.
7193 *
7294 * @return Maximum end time
7395 */
74- val maxTime: Float
75- get() {
76- if (tasks.isEmpty()) return 100f
77- var max = 0f
78- for (task in tasks) {
79- max = max(max, task.endTime)
80- }
81- return max
96+ var maxTime: Float
97+ get() = mMaxTime
98+ set(value) {
99+ mMaxTime = value
82100 }
83101
84102 /* *
85103 * Clear all tasks.
86104 */
87105 fun clearTasks () {
88106 tasks.clear()
107+ mMinTime = calcMinTime()
108+ mMaxTime = calcMaxTime()
89109 }
90110}
0 commit comments