Paste from clipboard WIP
This commit is contained in:
@@ -3,4 +3,5 @@ namespace FileTime.App.Core.Services;
|
||||
public interface ISystemClipboardService
|
||||
{
|
||||
Task CopyToClipboardAsync(string text);
|
||||
Task GetFiles();
|
||||
}
|
||||
@@ -0,0 +1,19 @@
|
||||
using FileTime.App.Core.Models.Enums;
|
||||
|
||||
namespace FileTime.App.Core.UserCommand;
|
||||
|
||||
public class PasteFilesFromClipboardCommand : IIdentifiableUserCommand
|
||||
{
|
||||
public const string PasteMergeCommandName = "paste_clipboard_merge";
|
||||
|
||||
public static readonly PasteFilesFromClipboardCommand Merge = new(PasteMode.Merge, PasteMergeCommandName);
|
||||
public PasteMode PasteMode { get; }
|
||||
|
||||
private PasteFilesFromClipboardCommand(PasteMode pasteMode, string commandName)
|
||||
{
|
||||
PasteMode = pasteMode;
|
||||
UserCommandID = commandName;
|
||||
}
|
||||
|
||||
public string UserCommandID { get; }
|
||||
}
|
||||
@@ -27,6 +27,7 @@ public class ItemManipulationUserCommandHandlerService : UserCommandHandlerServi
|
||||
private readonly ITimelessContentProvider _timelessContentProvider;
|
||||
private readonly ICommandScheduler _commandScheduler;
|
||||
private readonly IServiceProvider _serviceProvider;
|
||||
private readonly ISystemClipboardService _systemClipboardService;
|
||||
private readonly BindedCollection<FullName>? _markedItems;
|
||||
private IContainer? _currentLocation;
|
||||
|
||||
@@ -38,7 +39,8 @@ public class ItemManipulationUserCommandHandlerService : UserCommandHandlerServi
|
||||
ILogger<ItemManipulationUserCommandHandlerService> logger,
|
||||
ITimelessContentProvider timelessContentProvider,
|
||||
ICommandScheduler commandScheduler,
|
||||
IServiceProvider serviceProvider) : base(appState, timelessContentProvider)
|
||||
IServiceProvider serviceProvider,
|
||||
ISystemClipboardService systemClipboardService) : base(appState, timelessContentProvider)
|
||||
{
|
||||
_userCommandHandlerService = userCommandHandlerService;
|
||||
_clipboardService = clipboardService;
|
||||
@@ -47,6 +49,7 @@ public class ItemManipulationUserCommandHandlerService : UserCommandHandlerServi
|
||||
_timelessContentProvider = timelessContentProvider;
|
||||
_commandScheduler = commandScheduler;
|
||||
_serviceProvider = serviceProvider;
|
||||
_systemClipboardService = systemClipboardService;
|
||||
|
||||
SaveSelectedTab(t => _selectedTab = t);
|
||||
SaveCurrentLocation(l => _currentLocation = l);
|
||||
@@ -62,9 +65,15 @@ public class ItemManipulationUserCommandHandlerService : UserCommandHandlerServi
|
||||
new TypeUserCommandHandler<PasteCommand>(Paste),
|
||||
new TypeUserCommandHandler<CreateContainer>(CreateContainer),
|
||||
new TypeUserCommandHandler<CreateElement>(CreateElement),
|
||||
new TypeUserCommandHandler<PasteFilesFromClipboardCommand>(PasteFilesFromClipboard),
|
||||
});
|
||||
}
|
||||
|
||||
private async Task PasteFilesFromClipboard(PasteFilesFromClipboardCommand arg)
|
||||
{
|
||||
await _systemClipboardService.GetFiles();
|
||||
}
|
||||
|
||||
private async Task MarkItem()
|
||||
{
|
||||
if (_selectedTab == null || _currentSelectedItem?.BaseItem?.FullName == null) return;
|
||||
|
||||
@@ -38,6 +38,7 @@ public class DefaultIdentifiableCommandHandlerRegister : IStartupHandler
|
||||
AddUserCommand(PasteCommand.Merge);
|
||||
AddUserCommand(PasteCommand.Overwrite);
|
||||
AddUserCommand(PasteCommand.Skip);
|
||||
AddUserCommand(PasteFilesFromClipboardCommand.Merge);
|
||||
AddUserCommand(PauseCommandSchedulerCommand.Instance);
|
||||
AddUserCommand(RefreshCommand.Instance);
|
||||
AddUserCommand(StartCommandSchedulerCommand.Instance);
|
||||
|
||||
@@ -74,6 +74,7 @@ public static class MainConfiguration
|
||||
new(PasteCommand.PasteMergeCommandName, new[] {Key.P, Key.P}),
|
||||
new(PasteCommand.PasteOverwriteCommandName, new[] {Key.P, Key.O}),
|
||||
new(PasteCommand.PasteSkipCommandName, new[] {Key.P, Key.S}),
|
||||
new(PasteFilesFromClipboardCommand.PasteMergeCommandName, new[] {Key.C, Key.X}),
|
||||
//new CommandBindingConfiguration(ConfigCommand.PinFavorite, new[] { Key.F, Key.P }),
|
||||
//new CommandBindingConfiguration(ConfigCommand.PreviousTimelineBlock, Key.H ),
|
||||
//new CommandBindingConfiguration(ConfigCommand.PreviousTimelineCommand, Key.K ),
|
||||
|
||||
@@ -9,9 +9,26 @@ public class SystemClipboardService : ISystemClipboardService
|
||||
public async Task CopyToClipboardAsync(string text)
|
||||
{
|
||||
var clipboard = AvaloniaLocator.Current.GetService<IClipboard>();
|
||||
if (clipboard is not null)
|
||||
{
|
||||
|
||||
if (clipboard is null) { return; }
|
||||
|
||||
await clipboard.SetTextAsync(text);
|
||||
}
|
||||
public async Task GetFiles()
|
||||
{
|
||||
var clipboard = AvaloniaLocator.Current.GetService<IClipboard>();
|
||||
|
||||
if (clipboard is null) { return; }
|
||||
|
||||
await clipboard.ClearAsync();
|
||||
|
||||
var formats = await clipboard.GetFormatsAsync();
|
||||
if (!formats.Contains("asd")) return;
|
||||
var obj = (await clipboard.GetDataAsync("PNG"));
|
||||
/*var ms = new MemoryStream();
|
||||
Serializer.Serialize(ms, obj);
|
||||
byte[] data = ms.ToArray().Skip(4).ToArray();
|
||||
ms = new MemoryStream(data);*/
|
||||
;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user