Files

65 lines
1.4 KiB
C#

using OrderSupportTicket.ViewModels;
using System.Linq;
using System.Runtime.InteropServices;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Input;
using System.Windows.Media.Imaging;
namespace OrderSupportTicket.Views;
public partial class TicketComposerView : UserControl
{
public TicketComposerView() => InitializeComponent();
private void ChatTextBox_PreviewKeyDown(object sender, KeyEventArgs e)
{
var isPaste = (e.Key == Key.V && Keyboard.Modifiers == ModifierKeys.Control)
|| (e.Key == Key.Insert && Keyboard.Modifiers == ModifierKeys.Shift);
if (!isPaste || DataContext is not OrderSupportTicketViewModel viewModel)
{
return;
}
IDataObject data;
try
{
data = Clipboard.GetDataObject();
}
catch (ExternalException)
{
return;
}
if (data == null)
{
return;
}
if (data.GetDataPresent(DataFormats.Bitmap)
&& data.GetData(DataFormats.Bitmap) is BitmapSource bitmap)
{
viewModel.AddPendingImage(bitmap);
e.Handled = true;
return;
}
if (!data.GetDataPresent(DataFormats.FileDrop)
|| data.GetData(DataFormats.FileDrop) is not string[] files)
{
return;
}
var images = files
.Where(path => PendingAttachmentViewModel.TryGetMimeType(System.IO.Path.GetExtension(path), out _))
.ToArray();
if (images.Length == 0)
{
return;
}
viewModel.AddPendingImages(images);
e.Handled = true;
}
}