Column withs on the results screen can be saved and reused for all LIstView-s/watermeters

This commit is contained in:
Milan Hanajik
2015-01-16 03:09:41 +01:00
parent 2b6b569dee
commit ade156be5c
4 changed files with 93 additions and 11 deletions
@@ -24,6 +24,8 @@ namespace TBF.Screens
IList<Entities.Test> tests;
IList<Entities.TestResult> testResults;
bool combined;
ListView firstListView;
int lvWidth;
int lvHeight;
@@ -136,20 +138,23 @@ namespace TBF.Screens
///
/// Determine whether combined meter results are displayed
///
bool combined = ((testResults != null) &&
(testResults.Count > 0) &&
(testResults[0].MetersKind == Entities.MetersKind.Combined));
combined = ((testResults != null) &&
(testResults.Count > 0) &&
(testResults[0].MetersKind == Entities.MetersKind.Combined));
bool first = true;
for (int mtr = 0; mtr < (combined ? Program.WMsCount / 2 : Program.WMsCount); mtr++)
{
if (TestsArrangement == Forms.ResultsConfig.TestsAre.Rows)
{
ListView lview = GetResultsTestsAreRows(mtr, combined);
ListView lview = GetResultsTestsAreRows(mtr);
if (first) { firstListView = lview; first = false; }
if (lview != null) flowLayoutPanel.Controls.Add(lview);
}
else
{
ListView lview = GetResultsTestsAreColumns(mtr, combined);
ListView lview = GetResultsTestsAreColumns(mtr);
if (first) { firstListView = lview; first = false; }
if (lview != null) flowLayoutPanel.Controls.Add(lview);
}
}
@@ -229,7 +234,7 @@ namespace TBF.Screens
/// </summary>
/// <param name="mtr">Water meter number: 0..Program.WMsCount</param>
/// <returns>ListView object</returns>
ListView GetResultsTestsAreRows(int mtr, bool combined)
ListView GetResultsTestsAreRows(int mtr)
{
IList<Forms.ResultItemSpec> items = (combined ? RsltItems_Screen_CombinedWM : RsltItems_Screen_SingleWM);
if (tests == null || items == null) return null;
@@ -237,8 +242,27 @@ namespace TBF.Screens
ListView lview = GetListView();
// Header
lview.Columns.Add((mtr + 1).ToString());
foreach (var item in items) lview.Columns.Add(item.ClmnHeaderText);
TBF.LocalSettings ls = Program.LocalSettings;
if (combined)
{
lview.Columns.Add((mtr + 1).ToString(), (ls.RsltsCombinedClmnCount > 0) ? ls.RsltsCombinedClmnWdths[0] : 50);
int i = 1;
foreach (var item in items)
{
lview.Columns.Add(item.ClmnHeaderText, (ls.RsltsCombinedClmnCount > i) ? ls.RsltsCombinedClmnWdths[i] : 70);
i++;
}
}
else
{
lview.Columns.Add((mtr + 1).ToString(), (ls.RsltsSingleClmnCount > 0) ? ls.RsltsSingleClmnWdths[0] : 50);
int i = 1;
foreach (var item in items)
{
lview.Columns.Add(item.ClmnHeaderText, (ls.RsltsSingleClmnCount > i) ? ls.RsltsSingleClmnWdths[i] : 70);
i++;
}
}
IList<string> testNames = GetAllDecoratedTestNames();
int ix = 0;
@@ -290,7 +314,7 @@ namespace TBF.Screens
/// </summary>
/// <param name="mtr">Water meter number: 0..Program.WMsCount</param>
/// <returns>ListView object</returns>
ListView GetResultsTestsAreColumns(int mtr, bool combined)
ListView GetResultsTestsAreColumns(int mtr)
{
IList<Forms.ResultItemSpec> items = (combined ? RsltItems_Screen_CombinedWM : RsltItems_Screen_SingleWM);
if (tests == null || items == null) return null;
@@ -389,5 +413,32 @@ namespace TBF.Screens
RedrawAll();
}
}
private void columnWidthsButton_Click(object sender, EventArgs e)
{
if (firstListView == null) return;
/// Update the column widths
if (combined)
{
Program.LocalSettings.RsltsCombinedClmnWdths = new int[firstListView.Columns.Count];
for (int i = 0; i < firstListView.Columns.Count; i++)
{
Program.LocalSettings.RsltsCombinedClmnWdths[i] = firstListView.Columns[i].Width;
}
Program.LocalSettings.Save();
}
else
{
Program.LocalSettings.RsltsSingleClmnWdths = new int[firstListView.Columns.Count];
for (int i = 0; i < firstListView.Columns.Count; i++)
{
Program.LocalSettings.RsltsSingleClmnWdths[i] = firstListView.Columns[i].Width;
}
Program.LocalSettings.Save();
}
RedrawAll();
}
}
}