aboutsummaryrefslogtreecommitdiff
path: root/logic/database.gd
diff options
context:
space:
mode:
Diffstat (limited to 'logic/database.gd')
-rw-r--r--logic/database.gd67
1 files changed, 4 insertions, 63 deletions
diff --git a/logic/database.gd b/logic/database.gd
index 044681f..de978b7 100644
--- a/logic/database.gd
+++ b/logic/database.gd
@@ -1,21 +1,16 @@
-extends ItemList
+extends TouchItemList
class_name Database
const DATABASE_FILE_PATH: String = "user://database.csv"
-const POINTER_VELOCITY_DECAYING_FACTOR: float = 2.5
var db: Array
var selected_idx: int
var staged_idx: int
-var is_pointer_dragging := false
-var pointer_drag_velocity := 0.0
onready var stage := get_node("/root/main/stage") as Stage
onready var delete_button := get_node("actions/delete") as Button
onready var edit_button := get_node("actions/edit") as Button
onready var add_button := get_node("actions/add") as Button
-onready var v_scroll_bar := get_v_scroll() as ScrollBar
-onready var drag_sensor := get_node("drag_sensor") as PointerInputSensor
func _init():
@@ -36,24 +31,13 @@ func _ready():
stage.connect("save", self, "save_stage")
stage.connect("discard", self, "discard_stage")
- drag_sensor.connect("on_press", self, "pointer_input_handler")
- drag_sensor.connect("on_drag", self, "pointer_input_handler")
- drag_sensor.connect("on_end_drag", self, "pointer_input_handler")
- drag_sensor.connect("on_click", self, "pointer_input_handler")
-
for it in db:
self.add_item(get_entry_view(it))
-func _process(delta: float):
- # Apply drag movement inertia.
- if is_pointer_dragging == false && abs(pointer_drag_velocity) > 0.5:
- pointer_drag_velocity *= clamp((1.0 - POINTER_VELOCITY_DECAYING_FACTOR * delta), 0.0, 1.0)
- v_scroll_bar.value -= pointer_drag_velocity * delta
-
-
func _notification(what: int):
- # @DAM Yet to be polished.
+ # @DAM This code should be moved into the main.gd which should check which node was currently
+ # active and above, and send the signal there.
if visible == false || has_focus() == false:
return
@@ -77,10 +61,6 @@ func clear_selection():
unselect_all()
-func scroll_to_selected():
- v_scroll_bar.value = float(selected_idx)/float(db.size()) * v_scroll_bar.max_value - (v_scroll_bar.page * 0.5)
-
-
func delete_action():
if selected_idx < 0:
return
@@ -125,7 +105,7 @@ func save_stage(entry: Dictionary):
select(next_selected_idx)
emit_signal("item_selected", next_selected_idx) # Calling "select" does not trigger the "item_selected" signal.
set_item_text(selected_idx, get_entry_view(db[selected_idx]))
- call_deferred("scroll_to_selected")
+ ensure_current_is_visible()
store_database()
@@ -203,42 +183,3 @@ func fake_database(save_changes: bool = false):
store_database()
-func pointer_input_handler(pointer: PointerInputSensor.PointerInputData):
- match pointer.action:
- PointerInputSensor.PointerInputAction.ON_PRESS:
- is_pointer_dragging = true
-
- PointerInputSensor.PointerInputAction.ON_DRAG:
- is_pointer_dragging = true
- pointer_drag_velocity = pointer.velocity.y
- v_scroll_bar.value -= pointer.relative_position.y
-
- PointerInputSensor.PointerInputAction.ON_END_DRAG:
- is_pointer_dragging = false
-
- PointerInputSensor.PointerInputAction.ON_CLICK:
- var target := self
- var position := target.get_global_mouse_position() - target.rect_global_position
-
- var event_touch := InputEventScreenTouch.new()
- event_touch.index = 0
- event_touch.position = position
-
- var event_mouse := InputEventMouseButton.new()
- event_mouse.button_index = BUTTON_LEFT
- event_mouse.button_mask = BUTTON_MASK_LEFT
- event_mouse.position = position
-
- event_mouse.pressed = true
- event_touch.pressed = true
- target._gui_input(event_mouse)
- target._gui_input(event_touch)
-
- target.grab_focus()
-
- event_mouse.pressed = false
- event_touch.pressed = false
- target._gui_input(event_mouse)
- target._gui_input(event_touch)
-
-