DarkSlein 64e0bd0a51 Implemented prototype with minimal functionality
Added tablet view

Added time

Implemented reserve now buttons

Implemented auto-scale

Implemented reservation edit and deletion
2025-02-05 00:17:27 +03:00

108 lines
1.6 KiB
GDScript

@tool
extends HBoxContainer
enum Type {
Line,
Text,
Calendar,
Time
}
@export var title : String:
set(value):
title = value
set_title(title)
@export var type := Type.Line:
set(value):
type = value
set_type(type)
@export var editable : bool = true:
set(value):
editable = value
set_editable(value)
@onready var _label = $FieldLabelControl/FieldLabel
@onready var _line = $Line
@onready var _calendar = $Calendar
@onready var _time = $Time
@onready var _text = $Text
var _type
func _ready():
set_title(title)
set_type(type)
func set_title(new_title):
if _label == null:
await ready
_label.text = new_title
func get_value():
match _type:
Type.Line:
return _line.text
Type.Text:
return _text.text
Type.Calendar:
return ""
Type.Time:
return {
"hours": _time.get_hours(),
"minutes": _time.get_minutes()
}
func set_value(value):
match _type:
Type.Line:
_line.text = value
Type.Text:
_text.text = value
Type.Calendar:
pass
Type.Time:
_time.set_time(value.hours, value.minutes)
func set_editable(value):
if _line == null:
await ready
_line.editable = value
_text.editable = value
_time.editable = value
func set_type(type):
if _line == null:
await ready
_line.visible = false
_text.visible = false
_calendar.visible = false
_time.visible = false
_type = type
match type:
Type.Line:
_line.visible = true
Type.Text:
_text.visible = true
Type.Calendar:
_calendar.visible = true
Type.Time:
_time.visible = true
func clean():
match _type:
Type.Line:
_line.text = ""
Type.Text:
_text.text = ""
Type.Calendar:
pass
Type.Time:
_time.clean()