internal static void StoreSettings(EM_UI_MainForm mainForm) { if (!keepMode) { return; } CountryViewSetting setting = new CountryViewSetting(); string cc = mainForm.GetCountryShortName(); try { foreach (TreeListColumn col in mainForm.treeList.Columns) { setting.systemWidths.Add(col.Caption, col.Width); if (!col.Visible) { setting.hiddenSystems.AddUnique(col.Caption, true); } } foreach (TreeListNode polNode in mainForm.treeList.Nodes) { AddHiddenNode(ref setting.hiddenNodes, polNode); foreach (TreeListNode funcNode in polNode.Nodes) { AddHiddenNode(ref setting.hiddenNodes, funcNode); foreach (TreeListNode parNode in funcNode.Nodes) { AddHiddenNode(ref setting.hiddenNodes, parNode); } } } if (mainForm.GetTreeListBuilder() != null) { setting.textSize = mainForm.GetTreeListBuilder().GetTextSize(); } if (countryViewSettings.ContainsKey(cc)) { countryViewSettings[cc] = setting; } else { countryViewSettings.Add(cc, setting); } } catch (Exception exception) { UserInfoHandler.ShowException(exception, "Failed to store view settings for " + cc + ". Settings are set back to default.", false); if (countryViewSettings.ContainsKey(cc)) { countryViewSettings.Remove(cc); } } }
internal static void Init(string keptSettings) { try { countryViewSettings.Clear(); if (keptSettings == null || keptSettings == string.Empty) { return; } string[] countries = keptSettings.Split(splitCountry); if (countries.Count() < 1) { return; } keepMode = Convert.ToBoolean(countries.First()); if (keepMode == false) { return; } foreach (string country in countries.Skip(1)) { string[] settings = country.Split(splitSetting); if (settings.Count() < 1) { continue; } CountryViewSetting setting = new CountryViewSetting(); foreach (string s in settings.Skip(1)) { string[] items = s.Split(splitList); if (items.Count() < 1) { continue; } switch (items.First()) { case markSystemWidths: int i = 1; while (i + 1 < items.Count()) { setting.systemWidths.Add(items[i], int.Parse(items[i + 1])); i += 2; } break; case markHiddenSystems: foreach (string item in items.Skip(1)) { setting.hiddenSystems.AddUnique(item, true); } break; case markHiddenNodes: foreach (string item in items.Skip(1)) { setting.hiddenNodes.AddUnique(item, true); } break; case markTextSize: if (items.Count() >= 3) { setting.textSize = new Tuple <float, float>((float)EM_Helpers.SaveConvertToDouble(items[1]), (float)EM_Helpers.SaveConvertToDouble(items[2])); } break; } } countryViewSettings.Add(settings.First(), setting); } } catch (Exception exception) { UserInfoHandler.ShowException(exception, "Failed to apply stored view settings. Settings are set back to default.", false); countryViewSettings.Clear(); } }
internal static void RestoreSettings(EM_UI_MainForm mainForm, bool exceptionCall = false) { if (!keepMode) { return; } string cc = mainForm.GetCountryShortName(); try { if (!countryViewSettings.ContainsKey(cc)) { return; } CountryViewSetting setting = countryViewSettings[cc]; foreach (TreeListColumn col in mainForm.treeList.Columns) { if (setting.systemWidths.ContainsKey(col.Caption)) { col.Width = setting.systemWidths[col.Caption]; } if (setting.hiddenSystems.Contains(col.Caption, true)) { col.Visible = false; } if (setting.hiddenSystems.Count > 0) { mainForm.showHiddenSystemsBox(); } } foreach (TreeListNode polNode in mainForm.treeList.Nodes) { SetHiddenNode(setting.hiddenNodes, polNode); foreach (TreeListNode funcNode in polNode.Nodes) { SetHiddenNode(setting.hiddenNodes, funcNode); foreach (TreeListNode parNode in funcNode.Nodes) { SetHiddenNode(setting.hiddenNodes, parNode); } } } if (setting.textSize != null) { mainForm.GetTreeListBuilder().SetTextSize(setting.textSize); } } catch (Exception exception) { if (exceptionCall) { return; // to avoid an infinite loop because of some unknown problem } UserInfoHandler.ShowException(exception, "Failed to restored view settings. Settings are set back to default.", false); if (countryViewSettings.ContainsKey(cc)) { countryViewSettings[cc] = new CountryViewSetting(); } else { countryViewSettings.Add(cc, new CountryViewSetting()); } RestoreSettings(mainForm, true); } }