65 lines
1.4 KiB
C#
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;
|
|
}
|
|
} |