private void SelectedProvider_Event(object sender, SelectionChangedEventArgs e) { if (e.AddedItems.Count > 0) { var item = e.AddedItems[0] as RecogEngine; this.CurrentProvider.Text = item.RecogEngineName; var idx = ProviderList.IndexOf(item); var cnt = ProviderList.Count; if (idx >= 0) { var minShow = MinItemShowed; var maxShow = MinItemShowed + NumberItemShowed - 1; var midShow = (minShow + maxShow) / 2; var diff = idx - midShow; if (diff != 0) { var newMinShow = MinItemShowed; RecogEngine scrollItem = null; if (diff < 0) { newMinShow = Math.Max(0, MinItemShowed + diff); } else { maxShow = Math.Min(cnt - 1, MinItemShowed + diff + NumberItemShowed - 1); newMinShow = Math.Max(0, maxShow - NumberItemShowed + 1); } if (newMinShow != MinItemShowed) { int scrollidx = 0; if (diff < 0) { scrollItem = ProviderList[newMinShow]; scrollidx = newMinShow; } else { scrollItem = ProviderList[maxShow]; scrollidx = maxShow; } MinItemShowed = newMinShow; this.ViewOfProvider.ScrollIntoView(scrollItem); } } } } }
public void Closing() { if (DoShowNewBooru == Visibility.Visible) { CancelBooru(); } else { string path = Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData); path = Path.Combine(path, "BooruReader"); if (!Directory.Exists(path)) { Directory.CreateDirectory(path); } TextWriter textWriter = new StreamWriter(path + @"\Providers.xml"); XmlSerializer x = new XmlSerializer(_providerList.GetType()); x.Serialize(textWriter, _providerList); textWriter.Close(); if (GlobalSettings.Instance.MainScreenVM != null) { GlobalSettings.Instance.MainScreenVM.SettingsOpen = false; } var index = ProviderList.IndexOf(GlobalSettings.Instance.CurrentBooru); if (index >= 0) { GlobalSettings.Instance.CurrentBooruIndex = index; } } GlobalSettings.Instance.SaveSettings(); }