Browse Source

fixed row data

master
jkpete 3 months ago
parent
commit
fe4155580a
  1. 57
      addons/EGFramework/Module/GenerateTools/GodotUITemplete/EGodotTable.cs
  2. 12
      addons/EGFramework/Module/GenerateTools/GodotUITemplete/EGodotTableRowData.cs

57
addons/EGFramework/Module/GenerateTools/GodotUITemplete/EGodotTable.cs

@ -1,17 +1,66 @@
using System.Collections.Generic;
using Godot; using Godot;
namespace EGFramework.UI{ namespace EGFramework.UI{
public partial class EGodotTable : VBoxContainer,IEGFramework public partial class EGodotTable : VBoxContainer,IEGFramework
{ {
public override void _Ready() public HBoxContainer FunctionContainer { set; get; }
{ public HBoxContainer TitleContainer { set; get; }
public VBoxContainer RowDataContainer { set; get; }
public HBoxContainer PageContainer { set; get; }
public IEGSaveData SaveData { set; get; }
public Dictionary<string,string> TitleList { set; get; } = new Dictionary<string, string>();
private EGodotTablePageAdapter PageAdapter { set; get; }
private bool IsSearched { set; get; }
/// <summary>
/// The max data count for one page.
/// </summary>
/// <value></value>
[Export]
public int PageLimit { set; get; } = 10;
/// <summary>
/// Height mininum for RowDataContainer.
/// </summary>
/// <value></value>
[Export]
public int MinHeight { set; get; }
public void InitData<T>(IEGSaveData saveData,string key) where T: new(){
int count = saveData.GetDataCount(key);
if(PageAdapter == null){
PageAdapter = new EGodotTablePageAdapter(count,PageLimit);
}else{
PageAdapter.Reload(count,PageLimit);
} }
public override void _ExitTree() }
{ public void InitReadOnlyData<T>(IEGSaveDataReadOnly saveData,string key)where T:new(){
} }
}
public class EGodotTablePageAdapter{
public int DataLength { set; get; }
public int CurrentPage { set; get; }
public int MaxPage { set; get; }
public int PageLimit { set; get; }
public EasyEvent OnLoad = new EasyEvent();
public EGodotTablePageAdapter(int dataLength,int pageLimit = 10){
this.DataLength = dataLength;
this.PageLimit = pageLimit;
this.MaxPage = dataLength/PageLimit+1;
this.CurrentPage = 1;
}
public void Reload(int dataLength,int pageLimit = 10){
this.DataLength = dataLength;
this.PageLimit = pageLimit;
this.MaxPage = dataLength/PageLimit+1;
this.CurrentPage = 1;
OnLoad.Invoke();
}
} }
} }

12
addons/EGFramework/Module/GenerateTools/GodotUITemplete/EGodotTableRowData.cs

@ -3,7 +3,7 @@ using System.Collections.Generic;
using Godot; using Godot;
namespace EGFramework.UI{ namespace EGFramework.UI{
public partial class EGodotTableRowData : VBoxContainer,IEGFramework public partial class EGodotTableRowData : PanelContainer,IEGFramework
{ {
public Button ItemHover { get; set; } public Button ItemHover { get; set; }
public ColorRect Line { get; set; } public ColorRect Line { get; set; }
@ -19,6 +19,12 @@ namespace EGFramework.UI{
public void InitRowData(Dictionary<string,object> data){ public void InitRowData(Dictionary<string,object> data){
this.Data = data; this.Data = data;
BackGround = new ColorRect();
BackGround.Name = "BackGround";
BackGround.Color = new Color(0.5f,0.5f,1f);
BackGround.SizeFlagsHorizontal = SizeFlags.ExpandFill;
BackGround.SizeFlagsVertical = SizeFlags.ExpandFill;
this.AddChild(BackGround);
List = new HBoxContainer(); List = new HBoxContainer();
List.Name = "TableRow_"+Resource.GenerateSceneUniqueId(); List.Name = "TableRow_"+Resource.GenerateSceneUniqueId();
List.SizeFlagsHorizontal = Control.SizeFlags.ExpandFill; List.SizeFlagsHorizontal = Control.SizeFlags.ExpandFill;
@ -57,9 +63,7 @@ namespace EGFramework.UI{
OnDataEdit = e => { OnDataEdit = e => {
}; };
} this.AddThemeStyleboxOverride("panel",new StyleBoxEmpty());
public void RefreshRowData(){
} }
public void OnEdit(){ public void OnEdit(){

Loading…
Cancel
Save