complete refactoring
This commit is contained in:
		
							
								
								
									
										52
									
								
								ui/time_entries_items_tree.gd
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										52
									
								
								ui/time_entries_items_tree.gd
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,52 @@
 | 
			
		||||
class_name TimeEntriesItemsTree extends Tree
 | 
			
		||||
 | 
			
		||||
enum COL{
 | 
			
		||||
	TEXT,
 | 
			
		||||
	TIME
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
var current_item: TreeItem
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
func set_time_elapsed(total_elapsed: int) -> void:
 | 
			
		||||
	current_item.set_text(COL.TIME, TimeEntry.time_to_period(total_elapsed))
 | 
			
		||||
	current_item.set_metadata(COL.TIME, total_elapsed)
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
func set_current_item(task_name: String) -> void:
 | 
			
		||||
	current_item = append_name_to_tree(task_name, 0)
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
func get_current_text() -> String:
 | 
			
		||||
	var item := get_selected()
 | 
			
		||||
	if not item:
 | 
			
		||||
		return ""
 | 
			
		||||
	var resp: String = item.get_metadata(COL.TEXT)
 | 
			
		||||
	return resp
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
## Adds a new item to the tree, or returns the old item if it exists
 | 
			
		||||
func append_name_to_tree(task_name: String, total_time := 0) -> TreeItem:
 | 
			
		||||
	var item := get_root()
 | 
			
		||||
	for item_name in task_name.split("/"):
 | 
			
		||||
		item.collapsed = false
 | 
			
		||||
		item = find_item(item, item_name, true)
 | 
			
		||||
	item.set_metadata(COL.TEXT, task_name)
 | 
			
		||||
	if not item.get_metadata(COL.TIME):
 | 
			
		||||
		item.set_metadata(COL.TIME, total_time)
 | 
			
		||||
	scroll_to_item(item)
 | 
			
		||||
	return item
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
## Finds an item in the tree by text
 | 
			
		||||
func find_item(root: TreeItem, item_name: String, or_create: bool) -> TreeItem:
 | 
			
		||||
	for child in root.get_children():
 | 
			
		||||
		if child.get_text(COL.TEXT) == item_name:
 | 
			
		||||
			return child
 | 
			
		||||
	if or_create:
 | 
			
		||||
		var child := root.create_child()
 | 
			
		||||
		child.set_text(COL.TEXT, item_name)
 | 
			
		||||
		child.set_text(COL.TIME, Consts.NO_TIME)
 | 
			
		||||
		return child
 | 
			
		||||
	return null
 | 
			
		||||
		Reference in New Issue
	
	Block a user