public void FixActiveModsScrollbar() { ScrollViewer myViewer = ActiveModsListView.FindVisualChildren <ScrollViewer>().FirstOrDefault(); if (myViewer != null) { myViewer.ScrollToHorizontalOffset(0d); } }
private void MoveSelectedMods() { List <DivinityModData> selectedMods = new List <DivinityModData>(); int nextIndex = -1; DivinityModData targetMod = null; //DivinityApp.Log($"ListHasFocus(ActiveModsListView) = {ListHasFocus(ActiveModsListView)} | ListHasFocus(InactiveModsListView) = {ListHasFocus(InactiveModsListView)}"); if (ListHasFocus(ActiveModsListView)) { //var selectedMods = ViewModel.ActiveMods.Where(x => x.IsSelected).ToList(); //for (int i = 0; i < selectedMods.Count; i++) //{ // ViewModel.ActiveMods.Remove(selectedMods[i]); // ViewModel.InactiveMods.Add(selectedMods[i]); //} foreach (var m in ViewModel.ActiveMods.Where(x => x.IsSelected)) { nextIndex = Math.Min(m.Index + 1, ViewModel.ActiveMods.Count - 1); selectedMods.Add(m); } if (nextIndex > -1) { targetMod = ViewModel.ActiveMods.ElementAtOrDefault(nextIndex); DivinityApp.Log($"nextIndex({nextIndex}) targetMod({targetMod})"); } var dropInfo = new ManualDropInfo(selectedMods, InactiveModsListView.SelectedIndex, InactiveModsListView, ViewModel.InactiveMods, ViewModel.ActiveMods); InactiveModsListView.UnselectAll(); ViewModel.DropHandler.Drop(dropInfo); string countSuffix = selectedMods.Count > 1 ? "mods" : "mod"; string text = $"Moved {selectedMods.Count} {countSuffix} to the inactive mods list."; ScreenReaderHelper.Speak(text); ViewModel.ShowAlert(text, AlertType.Info, 10); canMoveSelectedMods = false; if (ViewModel.Settings.ShiftListFocusOnSwap) { InactiveModsListView.Focus(); } else { ActiveModsListView.Focus(); } if (targetMod != null && targetMod.IsActive) { ActiveModsListView.UnselectAll(); ActiveModsListView.SelectedItem = targetMod; targetMod.IsSelected = true; } } else if (ListHasFocus(InactiveModsListView)) { //var selectedMods = ViewModel.InactiveMods.Where(x => x.IsSelected).ToList(); //for (int i = 0; i < selectedMods.Count; i++) //{ // ViewModel.InactiveMods.Remove(selectedMods[i]); // ViewModel.ActiveMods.Add(selectedMods[i]); //} foreach (var m in ViewModel.InactiveMods.Where(x => x.IsSelected)) { nextIndex = Math.Min(ViewModel.InactiveMods.IndexOf(m) + 1, ViewModel.InactiveMods.Count - 1); selectedMods.Add(m); } if (nextIndex > -1) { targetMod = ViewModel.InactiveMods.FirstOrDefault(x => ViewModel.InactiveMods.IndexOf(x) == nextIndex && !x.IsClassicMod); } var dropInfo = new ManualDropInfo(selectedMods, ActiveModsListView.SelectedIndex, ActiveModsListView, ViewModel.ActiveMods, ViewModel.InactiveMods); ActiveModsListView.UnselectAll(); ViewModel.DropHandler.Drop(dropInfo); string countSuffix = selectedMods.Count > 1 ? "mods" : "mod"; string text = $"Moved {selectedMods.Count} {countSuffix} to the active mods list."; ScreenReaderHelper.Speak(text); ViewModel.ShowAlert(text, AlertType.Info, 10); canMoveSelectedMods = false; if (ViewModel.Settings.ShiftListFocusOnSwap) { ActiveModsListView.Focus(); } else { InactiveModsListView.Focus(); } if (targetMod != null && !targetMod.IsActive) { InactiveModsListView.UnselectAll(); InactiveModsListView.SelectedItem = targetMod; targetMod.IsSelected = true; } } }