/// <summary> /// Activates the selected mod on middle click /// </summary> private void ListViewItem_MouseUp(object sender, System.Windows.Input.MouseButtonEventArgs e) { if (e.ChangedButton == System.Windows.Input.MouseButton.Middle && e.ButtonState == System.Windows.Input.MouseButtonState.Released) { if ((sender as ListViewItem) != null) { InstalledModViewModel viewModel = (sender as ListViewItem).DataContext as InstalledModViewModel; ViewModel.ToggleActivateMod(viewModel.InstallInfo.ModID); } } }
/// <summary> /// Re-orders active mods after Drag/Drop has been "dropped" /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void lstMods_Drop(object sender, DragEventArgs e) { try { ListViewItem targetItem = GetListViewItemFromObject(e.OriginalSource); if (targetItem == null) { return; } Point mousePos = e.GetPosition(targetItem); double halfHeight = targetItem.ActualHeight / 2.0; InstalledModViewModel target = targetItem.DataContext as InstalledModViewModel; InstalledModViewModel droppedData = e.Data.GetData(typeof(InstalledModViewModel)) as InstalledModViewModel; int removedIdx = lstMods.Items.IndexOf(droppedData); int targetIdx = lstMods.Items.IndexOf(target); if (mousePos.Y >= halfHeight && removedIdx > targetIdx && (targetIdx + 1) < lstMods.Items.Count) { targetIdx++; } else if (mousePos.Y < halfHeight && removedIdx < targetIdx && (targetIdx - 1) >= 0) { targetIdx--; } if (targetIdx == removedIdx) { return; // no movement needed } int delta = targetIdx - removedIdx; ViewModel.ReorderProfileItem(droppedData, delta); } catch (System.Exception ex) { Logger.Warn("Failed to drag/drop mods"); Logger.Error(ex); } finally { IsDragging = false; } }
/// <summary> /// Opens the configure mod window for selected mod (if mod is active) /// </summary> private void ListViewItem_MouseDoubleClick(object sender, System.Windows.Input.MouseButtonEventArgs e) { if ((sender as ListViewItem) != null) { InstalledModViewModel viewModel = (sender as ListViewItem).DataContext as InstalledModViewModel; if (viewModel.IsActive) { ViewModel.ShowConfigureModWindow(viewModel); } else { Sys.Message(new WMessage("Mod is not active. Only activated mods can be configured.", true)); } } }
/// <summary> /// Opens the configure mod window for selected mod (if mod is active) /// </summary> private void ListViewItem_MouseDoubleClick(object sender, System.Windows.Input.MouseButtonEventArgs e) { if ((sender as ListViewItem) != null) { InstalledModViewModel viewModel = (sender as ListViewItem).DataContext as InstalledModViewModel; if (viewModel.IsActive) { ViewModel.ShowConfigureModWindow(viewModel); } else { Sys.Message(new WMessage(ResourceHelper.Get(StringKey.ModNotActiveOnlyActivatedModsCanBeConfigured), true)); } } }
/// <summary> /// Updates the border thickness of a ListViewItem during the drag and drop /// to show visual indicator of where the dragged item will be dropped /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void UpdateDragDropIndicatorLine(object sender, DragEventArgs e) { ListViewItem item = GetListViewItemFromObject(sender); if (item == null) { return; } Point mousePos = e.GetPosition(item); double halfHeight = item.ActualHeight / 2.0; InstalledModViewModel dataToDrop = e.Data.GetData(typeof(InstalledModViewModel)) as InstalledModViewModel; InstalledModViewModel hoverOver = (item.DataContext as InstalledModViewModel); // check if dragging over self - don't show border in this case int removedIdx = lstMods.Items.IndexOf(dataToDrop); int targetIdx = lstMods.Items.IndexOf(hoverOver); if (mousePos.Y >= halfHeight && removedIdx > targetIdx && (targetIdx + 1) < lstMods.Items.Count) { targetIdx++; } else if (mousePos.Y < halfHeight && removedIdx < targetIdx && (targetIdx - 1) >= 0) { targetIdx--; } if (dataToDrop == hoverOver || targetIdx == removedIdx) { hoverOver.BorderThickness = new Thickness(0); return; } if (mousePos.Y < halfHeight) { hoverOver.BorderThickness = new Thickness(0, 2, 0, 0); } else { hoverOver.BorderThickness = new Thickness(0, 0, 0, 2); } }
private void btnUninstall_Click(object sender, RoutedEventArgs e) { if (!IsModSelected()) { return; } InstalledModViewModel selected = (lstMods.SelectedItem as InstalledModViewModel); MessageDialogWindow messageDialog = new MessageDialogWindow("Uninstall Warning", $"Are you sure you want to delete {selected.Name}?", MessageBoxButton.YesNo, MessageBoxImage.Warning); messageDialog.ShowDialog(); if (messageDialog.ViewModel.Result == MessageBoxResult.Yes) { ViewModel.UninstallMod(selected); } }
private void btnUninstall_Click(object sender, RoutedEventArgs e) { if (!IsModSelected()) { return; } InstalledModViewModel selected = (lstMods.SelectedItem as InstalledModViewModel); MessageDialogWindow messageDialog = new MessageDialogWindow(ResourceHelper.Get(StringKey.UninstallWarning), $"{ResourceHelper.Get(StringKey.AreYouSureYouWantToDelete)} {selected.Name}?", MessageBoxButton.YesNo, MessageBoxImage.Warning); messageDialog.ShowDialog(); if (messageDialog.ViewModel.Result == MessageBoxResult.Yes) { ViewModel.UninstallMod(selected); } }