aboutsummaryrefslogtreecommitdiff
path: root/logic/database.gd
diff options
context:
space:
mode:
Diffstat (limited to 'logic/database.gd')
-rw-r--r--logic/database.gd95
1 files changed, 16 insertions, 79 deletions
diff --git a/logic/database.gd b/logic/database.gd
index 5f91c12..ea02324 100644
--- a/logic/database.gd
+++ b/logic/database.gd
@@ -54,6 +54,9 @@ func _ready():
func _notification(what: int):
+ if visible == false:
+ return
+
if what == MainLoop.NOTIFICATION_WM_GO_BACK_REQUEST:
if selected_idx >= 0:
clear_selection()
@@ -61,22 +64,6 @@ func _notification(what: int):
get_tree().quit()
-# @DAM Testing
-#var last_event
-#var bypass: bool = false
-#func _gui_input(event: InputEvent):
-# if bypass == false:
-# if event is InputEventScreenTouch && event.is_pressed():
-# accept_event()
-# last_event = event
-# elif event is InputEventScreenTouch && event.is_pressed() == false:
-# bypass = true
-# get_tree().input_event(event)
-# bypass = false
-# else:
-# var x = 3
-
-
func get_entry_view(database_entry: Dictionary) -> String:
return "%6s | %6s | %s" % [database_entry.process_id, database_entry.surgery_id, get_entry_date(database_entry)]
@@ -102,6 +89,7 @@ func delete_action():
db.remove(selected_idx)
self.remove_item(selected_idx)
+ selected_idx = -1
store_database()
@@ -122,15 +110,25 @@ func add_action():
stage.set_stage(staged)
+func scroll_down():
+ get_v_scroll().value = get_v_scroll().max_value
+
+
func save(database_entry: Dictionary):
database_entry = instance_entry(database_entry) # @DAM Maybe we could not be creating endless dictionaries?
+ var next_selected_idx: int
if staged_idx >= 0:
db[staged_idx] = database_entry
- set_item_text(staged_idx, get_entry_view(database_entry))
+ next_selected_idx = staged_idx
else:
db.append(database_entry)
add_item(get_entry_view(database_entry))
+ call_deferred("scroll_down")
+ next_selected_idx = db.size() - 1
+
store_database()
+ select(next_selected_idx)
+ item_selected(next_selected_idx) # Calling "select" does not trigger the "item_selected" signal.
staged_idx = -1
self.visible = true
@@ -254,7 +252,7 @@ static func set_entry_date(entry: Dictionary, date: String):
func fake_database():
db.resize(0)
- for idx in range(50):
+ for idx in range(500):
var date_year = 1 + int(float(idx) / 365.0)
var date_month = idx % 12
var date_day = idx % 365
@@ -264,64 +262,3 @@ func fake_database():
"date": "%04d-%02d-%02d" % [date_year, date_month, date_day]
}))
-
-
-
-
-
-
-# @DAM Testing.
-export(float) var drag_threshold = 5
-
-onready var touch_enabled = OS.has_touchscreen_ui_hint()
-onready var v_scroll = get_v_scroll()
-
-var dragging = false
-var pressed = false
-var last_event
-# must be _input, as _gui_input has bugs, with no touch.pressed = false events
-# see: https://github.com/godotengine/godot/issues/16761
-func _gui_input(event):
-
- if event is InputEventScreenDrag:
- self.v_scroll.value -= event.relative.y
-
- return
- if not visible:
- return
-
- if not touch_enabled:
- return
-
- if event is InputEventScreenDrag:
- accept_event()
- if event.speed == Vector2():
- # we're on a device and speed is broken
- # see: https://github.com/godotengine/godot/issues/3623
- event.speed = event.relative
- if abs(event.speed.y) >= drag_threshold:
- # scroll the list
- dragging = true
- v_scroll.value -= event.relative.y
- return
-
- if event is InputEventScreenTouch:
- if event.index == 0:
- accept_event()
- if dragging && event.pressed == false:
- # prints("end drag")
- dragging = false
- pressed = false
- else:
- if event.pressed && pressed == false:
- # prints("touch start")
- pressed = true
- accept_event()
- # TODO: prevent select highlight
- elif !event.pressed && pressed == true:
- # prints("touch end and accept")
- pressed = false
- var ev = InputEventAction.new()
- ev.action = "ui_accept"
- ev.pressed = true
- Input.parse_input_event(ev)