10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
|
# File 'lib/deadline/timer.rb', line 10
def self.track
tasks = Task.all
if tasks == nil || tasks.size == 0
puts "No task available"
return
end
Curses.init_screen
Curses.start_color
Curses.init_pair LABEL_GREEN, Curses::COLOR_GREEN, Curses::COLOR_BLACK
Curses.init_pair LABEL_RED, Curses::COLOR_RED, Curses::COLOR_BLACK
Curses.init_pair LABEL_WHITE, Curses::COLOR_WHITE, Curses::COLOR_BLACK
past_task_num = Task.all.size
loop do
Task.refresh
tasks = Task.all
if tasks.size == 0
Curses.close_screen
break
end
if tasks.size < past_task_num
Curses.close_screen
Curses.init_screen
end
past_task_num = tasks.size
tasks.each_with_index do |task, idx|
last_time = ""
line_pos = Curses.lines / 2
if idx == 0
last_time = special_last_time_of(task)
else
line_pos += idx + 2
last_time = last_time_of(task)
end
task_str = "#{last_time} - #{task[:task]}"
Curses.setpos(line_pos, Curses.cols / 2 - (task_str.length / 2))
Curses.addstr(task_str)
end
Curses.attron(Curses.color_pair(LABEL_WHITE))
top_label = "【Latest Task】"
Curses.setpos(Curses.lines / 2 - 1, Curses.cols / 2 - (top_label.length / 2))
Curses.addstr(top_label)
if tasks.size > 1
top_label = "【Other Tasks】"
Curses.setpos(Curses.lines / 2 + 2, Curses.cols / 2 - (top_label.length / 2))
Curses.addstr(top_label)
end
Curses.refresh
sleep(1)
end
end
|