From a2192323bc317a1bad43fcab4c92b0cb32273bc7 Mon Sep 17 00:00:00 2001 From: HuskyTeufel Date: Fri, 9 Apr 2021 21:40:56 +0200 Subject: [PATCH] =?UTF-8?q?Stra=C3=9Fenliste=20speichert=20nun=20die=20ein?= =?UTF-8?q?stellung?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- SanSystem/Einstellungen/ObjecteListSetting.cs | 4 +- SanSystem/Einstellungen/Settings.cs | 4 +- SanSystem/Einstellungen/StreetListSettings.cs | 33 ++++ SanSystem/SanSystem.csproj | 2 +- SanSystem/StrassenContent.cs | 15 -- SanSystem/frmStrassenList.Designer.cs | 55 +++---- SanSystem/frmStrassenList.cs | 141 ++++++++++++------ 7 files changed, 166 insertions(+), 88 deletions(-) create mode 100644 SanSystem/Einstellungen/StreetListSettings.cs delete mode 100644 SanSystem/StrassenContent.cs diff --git a/SanSystem/Einstellungen/ObjecteListSetting.cs b/SanSystem/Einstellungen/ObjecteListSetting.cs index 60f329b..99e4147 100644 --- a/SanSystem/Einstellungen/ObjecteListSetting.cs +++ b/SanSystem/Einstellungen/ObjecteListSetting.cs @@ -11,7 +11,7 @@ namespace SanSystem.Einstellungen { public ObjecteListSetting() : base("ObjecteList") { } - public override int GetWidth(DataGridViewColumn dataGridViewColumn) + public int GetWidth(DataGridViewColumn dataGridViewColumn) { int result = -1; @@ -26,7 +26,7 @@ namespace SanSystem.Einstellungen return result; } - public override void SetWidth(DataGridViewColumn dataGridViewColumn) + public void SetWidth(DataGridViewColumn dataGridViewColumn) { setConfig(dataGridViewColumn.HeaderText, dataGridViewColumn.Width); } diff --git a/SanSystem/Einstellungen/Settings.cs b/SanSystem/Einstellungen/Settings.cs index d6b6a42..da930c7 100644 --- a/SanSystem/Einstellungen/Settings.cs +++ b/SanSystem/Einstellungen/Settings.cs @@ -59,8 +59,8 @@ namespace SanSystem.Einstellungen } public abstract void InitDevValues(); - public abstract int GetWidth(DataGridViewColumn dataGridViewColumn); - public abstract void SetWidth(DataGridViewColumn dataGridViewColumn); + //public abstract int GetWidth(DataGridViewColumn dataGridViewColumn); + //public abstract void SetWidth(DataGridViewColumn dataGridViewColumn); public virtual void SaveSettings() { diff --git a/SanSystem/Einstellungen/StreetListSettings.cs b/SanSystem/Einstellungen/StreetListSettings.cs new file mode 100644 index 0000000..fbdf13a --- /dev/null +++ b/SanSystem/Einstellungen/StreetListSettings.cs @@ -0,0 +1,33 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace SanSystem.Einstellungen +{ + class StreetListSettings : Settings + { + public StreetListSettings() : base("StreetList") + { + } + + public void SetRadioButton(string what) + { + if (what.Equals("Sorted")) + setConfig("ort_selected", 1); + else + setConfig("ort_selected", 0); + } + + public bool SortedSelected() + { + return (getConfiguration("ort_selected") > 0); + } + + public override void InitDevValues() + { + configuration.Add("ort_selected", 0); + } + } +} diff --git a/SanSystem/SanSystem.csproj b/SanSystem/SanSystem.csproj index 946ad01..5ae5400 100644 --- a/SanSystem/SanSystem.csproj +++ b/SanSystem/SanSystem.csproj @@ -116,6 +116,7 @@ + Form @@ -235,7 +236,6 @@ - UserControl diff --git a/SanSystem/StrassenContent.cs b/SanSystem/StrassenContent.cs deleted file mode 100644 index 6b58362..0000000 --- a/SanSystem/StrassenContent.cs +++ /dev/null @@ -1,15 +0,0 @@ -namespace SanSystem -{ - class StrassenContent - { - public string Strassename; - public int AnzahlObjekte; - public int AnzahlFertig; - - public override string ToString() - { - return string.Format("{0} ({1} / {2})", Strassename, AnzahlFertig, AnzahlObjekte); - } - } - -} diff --git a/SanSystem/frmStrassenList.Designer.cs b/SanSystem/frmStrassenList.Designer.cs index 8cfa24e..7562193 100644 --- a/SanSystem/frmStrassenList.Designer.cs +++ b/SanSystem/frmStrassenList.Designer.cs @@ -28,35 +28,22 @@ /// private void InitializeComponent() { - this.lst_strassen = new System.Windows.Forms.ListBox(); this.btn_add = new System.Windows.Forms.Button(); this.rdbtn_street = new System.Windows.Forms.RadioButton(); this.rdbtn_ort = new System.Windows.Forms.RadioButton(); + this.trv_street = new System.Windows.Forms.TreeView(); this.SuspendLayout(); // - // lst_strassen - // - this.lst_strassen.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) - | System.Windows.Forms.AnchorStyles.Left) - | System.Windows.Forms.AnchorStyles.Right))); - this.lst_strassen.Font = new System.Drawing.Font("Microsoft Sans Serif", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.lst_strassen.FormattingEnabled = true; - this.lst_strassen.ItemHeight = 20; - this.lst_strassen.Location = new System.Drawing.Point(12, 130); - this.lst_strassen.Margin = new System.Windows.Forms.Padding(2, 2, 2, 2); - this.lst_strassen.Name = "lst_strassen"; - this.lst_strassen.Size = new System.Drawing.Size(190, 424); - this.lst_strassen.TabIndex = 0; - this.lst_strassen.DoubleClick += new System.EventHandler(this.lst_strassen_DoubleClick); - // // btn_add // + this.btn_add.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) + | System.Windows.Forms.AnchorStyles.Right))); this.btn_add.Font = new System.Drawing.Font("Microsoft Sans Serif", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); this.btn_add.Image = global::SanSystem.Properties.Resources.Add1; this.btn_add.ImageAlign = System.Drawing.ContentAlignment.MiddleLeft; this.btn_add.Location = new System.Drawing.Point(12, 12); this.btn_add.Name = "btn_add"; - this.btn_add.Size = new System.Drawing.Size(188, 82); + this.btn_add.Size = new System.Drawing.Size(262, 82); this.btn_add.TabIndex = 1; this.btn_add.Text = "Neues \r\nObjekt hinzufügen"; this.btn_add.UseVisualStyleBackColor = true; @@ -65,38 +52,55 @@ // rdbtn_street // this.rdbtn_street.AutoSize = true; - this.rdbtn_street.Location = new System.Drawing.Point(19, 107); + this.rdbtn_street.Font = new System.Drawing.Font("Microsoft Sans Serif", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.rdbtn_street.Location = new System.Drawing.Point(19, 109); this.rdbtn_street.Name = "rdbtn_street"; - this.rdbtn_street.Size = new System.Drawing.Size(80, 17); + this.rdbtn_street.Size = new System.Drawing.Size(113, 24); this.rdbtn_street.TabIndex = 2; this.rdbtn_street.TabStop = true; this.rdbtn_street.Text = "Straßenliste"; this.rdbtn_street.UseVisualStyleBackColor = true; + this.rdbtn_street.CheckedChanged += new System.EventHandler(this.rdbtn_street_CheckedChanged); // // rdbtn_ort // this.rdbtn_ort.AutoSize = true; - this.rdbtn_ort.Location = new System.Drawing.Point(110, 107); + this.rdbtn_ort.Font = new System.Drawing.Font("Microsoft Sans Serif", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.rdbtn_ort.Location = new System.Drawing.Point(138, 109); this.rdbtn_ort.Name = "rdbtn_ort"; - this.rdbtn_ort.Size = new System.Drawing.Size(63, 17); + this.rdbtn_ort.Size = new System.Drawing.Size(86, 24); this.rdbtn_ort.TabIndex = 3; this.rdbtn_ort.TabStop = true; this.rdbtn_ort.Text = "Ortsteile"; this.rdbtn_ort.UseVisualStyleBackColor = true; + this.rdbtn_ort.CheckedChanged += new System.EventHandler(this.rdbtn_street_CheckedChanged); + // + // trv_street + // + this.trv_street.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) + | System.Windows.Forms.AnchorStyles.Left) + | System.Windows.Forms.AnchorStyles.Right))); + this.trv_street.Font = new System.Drawing.Font("Microsoft Sans Serif", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.trv_street.Location = new System.Drawing.Point(12, 139); + this.trv_street.Name = "trv_street"; + this.trv_street.Size = new System.Drawing.Size(263, 415); + this.trv_street.TabIndex = 4; + this.trv_street.DoubleClick += new System.EventHandler(this.trv_street_DoubleClick); // // frmStrassenList // this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; - this.ClientSize = new System.Drawing.Size(212, 565); + this.ClientSize = new System.Drawing.Size(288, 565); this.ControlBox = false; + this.Controls.Add(this.trv_street); this.Controls.Add(this.rdbtn_ort); this.Controls.Add(this.rdbtn_street); this.Controls.Add(this.btn_add); - this.Controls.Add(this.lst_strassen); - this.Margin = new System.Windows.Forms.Padding(2, 2, 2, 2); + this.Margin = new System.Windows.Forms.Padding(2); this.Name = "frmStrassenList"; this.Text = "Strassen"; + this.FormClosing += new System.Windows.Forms.FormClosingEventHandler(this.frmStrassenList_FormClosing); this.Load += new System.EventHandler(this.frmStrassenList_Load); this.ResumeLayout(false); this.PerformLayout(); @@ -104,10 +108,9 @@ } #endregion - - private System.Windows.Forms.ListBox lst_strassen; private System.Windows.Forms.Button btn_add; private System.Windows.Forms.RadioButton rdbtn_street; private System.Windows.Forms.RadioButton rdbtn_ort; + private System.Windows.Forms.TreeView trv_street; } } \ No newline at end of file diff --git a/SanSystem/frmStrassenList.cs b/SanSystem/frmStrassenList.cs index 1a19d80..bb7537a 100644 --- a/SanSystem/frmStrassenList.cs +++ b/SanSystem/frmStrassenList.cs @@ -1,5 +1,6 @@ using Database; using KlassenBIB; +using SanSystem.Einstellungen; using System; using System.Collections.Generic; using System.ComponentModel; @@ -18,7 +19,7 @@ namespace SanSystem /// public partial class frmStrassenList : Form { - BindingSource bs = new BindingSource(); + StreetListSettings streetListSetting = new StreetListSettings(); /// /// /// @@ -34,57 +35,95 @@ namespace SanSystem private void buildStreetList() { - lst_strassen.DataSource = null; + trv_street.Nodes.Clear(); if (Datenbank.Instance.loadedProjekt == null) return; rdbtn_ort.Enabled = mehrereOrteAktiv(); if (!mehrereOrteAktiv()) rdbtn_street.Checked = true; + + if (rdbtn_street.Checked) buildUnsortedStreetList(); + if (rdbtn_ort.Checked) buildSortedSteetList(); + } + + private void buildSortedSteetList() + { + List ortteile = Datenbank.Instance.loadedProjekt.Objekte.Select(x => x.OrtName).Distinct().ToList(); + foreach(string ort in ortteile) + { + List strassen = Datenbank.Instance.loadedProjekt.Objekte.Where(y => y.OrtName.Equals(ort)).Select(x => x.StrasseName).Distinct().ToList(); + TreeNode[] streetnodes = new TreeNode[strassen.Count]; + for(int i = 0; i < strassen.Count; i++) + { + streetnodes[i] = new TreeNode(); + Tuple x = getStatikFromStreet(strassen[i]); + streetnodes[i].Text = string.Format("{0} ({1} / {2})", strassen[i], x.Item1, x.Item2); + streetnodes[i].Tag = strassen[i]; + } + + TreeNode node = new TreeNode(ort, streetnodes); + trv_street.Nodes.Add(node); + } + } + + private Tuple getStatikFromStreet(string strassename) + { + IEnumerable objekte = Datenbank.Instance.loadedProjekt.Objekte.Where(x => x.StrasseName.Equals(strassename)); + int counter = 0; + foreach (var objekt in objekte) + { + bool fertig = false; + foreach (var x in objekt.Sanierung) + { + AbstractSanieren abstractSanieren = (AbstractSanieren)x; + if (abstractSanieren.Fertig == true) + { + fertig = true; + } + else + { + fertig = false; + break; + } + } + if (fertig) + { + counter++; + } + } + return new Tuple(objekte.Count(), counter); + } + + private void buildUnsortedStreetList() + { List strassen = Datenbank.Instance.loadedProjekt.Objekte.Select(x => x.StrasseName).Distinct().ToList(); List streets = new List(); - List strassenContents = new List(); + foreach (string strassename in strassen) { string streetname = string.Empty; - //Anzahl gesamt objekte - IEnumerable objekte = Datenbank.Instance.loadedProjekt.Objekte.Where(x => x.StrasseName.Equals(strassename)); - int counter = 0; - foreach(var objekt in objekte) - { - bool fertig = false; - foreach(var x in objekt.Sanierung) - { - AbstractSanieren abstractSanieren = (AbstractSanieren)x; - if(abstractSanieren.Fertig == true) - { - fertig = true; - } - else - { - fertig = false; - break; - } - } - if(fertig) - { - counter++; - } - } + Tuple x = getStatikFromStreet(strassename); - //Debugger.Break(); - strassenContents.Add(new StrassenContent() + trv_street.Nodes.Add(new TreeNode() { - Strassename = strassename, - AnzahlObjekte = objekte.Count(), - AnzahlFertig = counter - }) ; + Text = string.Format("{0} ({1} / {2})", strassename, x.Item1, x.Item2), + Tag = strassename + }); } - - lst_strassen.DataSource = strassenContents; } private void frmStrassenList_Load(object sender, EventArgs e) { this.Height = this.MdiParent.Height - 120; + if(streetListSetting.SortedSelected()) + { + rdbtn_street.Checked = false; + rdbtn_ort.Checked = true; + } + else + { + rdbtn_street.Checked = true; + rdbtn_ort.Checked = false; + } buildStreetList(); btn_add.Text = Global.Instance.language.Labels["add_objekt"]; } @@ -101,23 +140,41 @@ namespace SanSystem frmObjektEdit.Show(); } - private void lst_strassen_DoubleClick(object sender, EventArgs e) + + private void FrmObjekt_FormClosed(object sender, FormClosedEventArgs e) { - if ((sender as ListBox).SelectedItem == null) return; - StrassenContent selectedStreetName = ((sender as ListBox).SelectedItem as StrassenContent); - //Debugger.Break(); - if (selectedStreetName == null) return; + buildStreetList(); + } - frmObjekteList frmObjekteList = new frmObjekteList(selectedStreetName.Strassename); + private void trv_street_DoubleClick(object sender, EventArgs e) + { + if ((sender as TreeView).SelectedNode == null) return; + string selectedStreetName = (string)(sender as TreeView).SelectedNode.Tag; + if (selectedStreetName.Equals("")) return; + + frmObjekteList frmObjekteList = new frmObjekteList(selectedStreetName); frmObjekteList.MdiParent = this.MdiParent; frmObjekteList.FormClosed += FrmObjekt_FormClosed; frmObjekteList.Show(); } - private void FrmObjekt_FormClosed(object sender, FormClosedEventArgs e) + private void rdbtn_street_CheckedChanged(object sender, EventArgs e) { + if (rdbtn_ort.Checked) + { + streetListSetting.SetRadioButton("Sorted"); + } + else if (rdbtn_street.Checked) + { + streetListSetting.SetRadioButton("Unsorted"); + } buildStreetList(); } + + private void frmStrassenList_FormClosing(object sender, FormClosingEventArgs e) + { + streetListSetting.SaveSettings(); + } } }