From 04535e8427cda452ff1750280f3f72e1db28696e Mon Sep 17 00:00:00 2001 From: phantomix Date: Mon, 18 Jan 2021 08:43:56 +0100 Subject: [PATCH] 210118PX Worked on MV data structures and GUI; the MV list is now read from / stored to Disk and there's a ListView to display MVs in the future --- Program.cs | 28 +++++++++++++++++++++++++ dezentrale-members.csproj | 1 + model/Configuration.cs | 1 + model/Mv.cs | 10 +++++++++ view/LvMv.cs | 43 +++++++++++++++++++++++++++++++++++++++ view/frmMain.cs | 6 +++++- 6 files changed, 88 insertions(+), 1 deletion(-) create mode 100644 view/LvMv.cs diff --git a/Program.cs b/Program.cs index cdbc673..966d153 100644 --- a/Program.cs +++ b/Program.cs @@ -53,6 +53,7 @@ namespace dezentrale public static string ConfigFile = Path.Combine(DmDirectory, "configuration.xml"); public static Configuration config = new Configuration(); public static MemberList members = new MemberList(); + public static MvList mvList = new MvList(); public static bool MoneyTransfersLoaded { get { return moneyTransfers != null; } } private static MoneyTransferList moneyTransfers = null; @@ -118,6 +119,33 @@ namespace dezentrale Console.WriteLine(ex.Message); return 1; } + + + try + { + string mvFileName = System.IO.Path.Combine(Program.config.DbDirectory, MvList.FileName); + mvList = (MvList)XmlData.LoadFromFile(mvFileName, typeof(MvList)); + Console.WriteLine($"Loaded MV list with {mvList.Entries.Count} entries"); + } + catch (FileNotFoundException) + { + Console.WriteLine("Creating new MV list file"); + try + { + mvList.SaveToFile(); + } catch(Exception ex) + { + Console.WriteLine("Error while creating new MV list:"); + Console.WriteLine(ex.Message); + return 1; + } + } + catch (Exception ex) + { + Console.WriteLine("Error while loading MV list:"); + Console.WriteLine(ex.Message); + return 1; + } return 0; } diff --git a/dezentrale-members.csproj b/dezentrale-members.csproj index 4c709c7..0dfda53 100644 --- a/dezentrale-members.csproj +++ b/dezentrale-members.csproj @@ -203,6 +203,7 @@ + diff --git a/model/Configuration.cs b/model/Configuration.cs index 48d0409..3a3ffec 100644 --- a/model/Configuration.cs +++ b/model/Configuration.cs @@ -24,6 +24,7 @@ namespace dezentrale.model //UI: lstMembers: Columns [XmlElement("MemberListColumn")] public List MemberListColumns { get; set; } = new List(); [XmlElement("MTListColumn")] public List MTListColumns { get; set; } = new List(); + [XmlElement("MvListColumn")] public List MvListColumns { get; set; } = new List(); [XmlElement] public List MoneyTransferRegEx { get; set; } = new List(); //This doesn't belong here! Move to new file within db-data! [XmlElement] public DateTime LastCronjobRun { get; set; } = DateTime.Now; //This doesn't belong here! Move to new file within db-data! diff --git a/model/Mv.cs b/model/Mv.cs index b6d79fa..3a50cfd 100644 --- a/model/Mv.cs +++ b/model/Mv.cs @@ -13,6 +13,16 @@ namespace dezentrale.model public class Mv : XmlData { + public enum MvStatus + { + InPreparation = 0, + InvitationSent = 1, + Started = 2, + Ended = 3, + Cancelled = 0xFF, + } + + public MvStatus Status { get; set; } public DateTime EventDate { get; set; } public string Headline { get; set; } public string Introduction { get; set; } diff --git a/view/LvMv.cs b/view/LvMv.cs new file mode 100644 index 0000000..9e0a2a3 --- /dev/null +++ b/view/LvMv.cs @@ -0,0 +1,43 @@ +using System; +using System.Collections.Generic; +using System.Drawing; +using System.Windows.Forms; + +using dezentrale.model; + +namespace dezentrale.view +{ + public class LvMv : CustomListView + { + protected override List DefaultColumns + { get + { return new List() + { + new ConfigLVDataHandler() + { + Name = "status", + Display = "Status", + Width = 57, TextAlign = HorizontalAlignment.Right, + CustomToString = ( x => ((Mv)x).Status.ToString()), + }, + new ConfigLVDataHandler() + { + Name = "date", + Display = "Date", + Width = 160, + CustomToString = ( x => (((Mv)x).EventDate.ToString()) ), + }, + }; + } } + + public LvMv() : base(Program.config.MemberListColumns, LvMv_ColumnsChanged) { } + + private static void LvMv_ColumnsChanged(object sender, ColumnsChangedArgs e) + { + Console.WriteLine("LvMv_ColumnsChanged"); + Program.config.MvListColumns.Clear(); + foreach (ConfigLVDataHandler c in e.Columns) Program.config.MvListColumns.Add(new ConfigLVColumn(c)); + XmlData.SaveToFile(Program.ConfigFile, Program.config); + } + } +} \ No newline at end of file diff --git a/view/frmMain.cs b/view/frmMain.cs index 9a9453a..d43ec4f 100644 --- a/view/frmMain.cs +++ b/view/frmMain.cs @@ -13,6 +13,7 @@ namespace dezentrale.view { private LVMembers lstMembers; private LVMoneyTransfers mtv; + private LvMv lstMv; private void BuildMoneyTransfers(Control parent) { @@ -103,13 +104,16 @@ namespace dezentrale.view //lstMembers.AddMenuItem("Main Settings", null); lstMembers.DoubleClick += lstMembers_Edit; + TabPage tabMvList = new TabPage("MvList"); + tabMvList.Controls.Add(lstMv = new LvMv() { Dock = DockStyle.Fill, }); + TabPage tabMoneyTransfers = new TabPage("MoneyTransfers"); BuildMoneyTransfers(tabMoneyTransfers); this.Controls.Add(new TabControl() { Dock = DockStyle.Fill, - TabPages = { tabMembers, tabMoneyTransfers }, + TabPages = { tabMembers, tabMvList, tabMoneyTransfers }, }); this.ResumeLayout(false);