78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
|
# File 'lib/interactive.rb', line 78
def interactive_edit(tasks)
@tasks = tasks
@deleted_tasks = []
@header = '2015-06-03 ' + '[↑|↓] navigate, [⇽|⇾] adjust time, [⇐ ] remove, [↵ |q] save, [esc] cancel'.grey
@task_selected = 0
loop do
print_tasks
input = read_char
exit if [KEY_CTRL_C, KEY_ESCAPE].include? input
return @deleted_tasks if [KEY_ENTER, 'q'].include? input
top_down = { KEY_DOWN => +1, KEY_TOP => -1 }
if top_down.keys.include? input
@task_selected += top_down[input]
@task_selected %= @tasks.length
end
left_right = { KEY_RIGHT => +300, KEY_LEFT => -300 }
if left_right.keys.include? input
time = @tasks[@task_selected].duration
time = [time - (time % 300) + left_right[input], 0].max
@tasks[@task_selected].duration = time
@tasks[@task_selected].edited_at = Time.now
end
if input == KEY_BACKSPACE
next if @tasks.length <= 1
@tasks[@task_selected].deleted_at = Time.now
@deleted_tasks << @tasks[@task_selected]
@tasks.delete_at(@task_selected)
@task_selected -= 1 if @task_selected == @tasks.length
@task_selected %= @tasks.length
end
end
end
|