diff options
Diffstat (limited to 'logic')
| -rw-r--r-- | logic/database.gd | 95 | ||||
| -rw-r--r-- | logic/stage.gd | 8 |
2 files changed, 16 insertions, 87 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) diff --git a/logic/stage.gd b/logic/stage.gd index 207b451..ac5e9aa 100644 --- a/logic/stage.gd +++ b/logic/stage.gd @@ -100,11 +100,3 @@ func _notification(what: int): discard_action() -func _unhandled_input(event): - get_node("/root/main/debug").text += "%s\n" % event.to_string() - - -func _unhandled_key_input(event): - get_node("/root/main/debug").text += "%s\n" % event.to_string() - - |
