using System.Diagnostics.CodeAnalysis;
using Vanara.PInvoke;
using static Vanara.PInvoke.Shell32;
namespace Vanara.Windows.Shell;
public partial class ShellFileOperations
{
/// Arguments supplied to the event.
///
public class ShellFileNewOpEventArgs : ShellFileOpEventArgs
{
internal ShellFileNewOpEventArgs(TRANSFER_SOURCE_FLAGS flags, IShellItem? source, IShellItem folder, IShellItem dest, string name, HRESULT hr, string? templ, uint attr) :
base(flags, source, folder, dest, name, hr)
{
TemplateName = templ;
FileAttributes = (System.IO.FileAttributes)attr;
}
/// Gets the name of the template.
/// The name of the template.
public string? TemplateName { get; protected set; }
/// Gets the file attributes.
/// The file attributes.
public System.IO.FileAttributes FileAttributes { get; protected set; }
}
///
/// Arguments supplied to events from . Depending on the event, some properties may not be set.
///
///
public class ShellFileOpEventArgs : EventArgs
{
internal ShellFileOpEventArgs(TRANSFER_SOURCE_FLAGS flags, IShellItem? source, IShellItem? folder = null, IShellItem? dest = null, string? name = null, HRESULT hr = default)
{
Flags = (TransferFlags)flags;
if (source != null) try { SourceItem = ShellItem.Open(source); } catch { }
if (folder != null) try { DestFolder = ShellItem.Open(folder); } catch { }
if (dest != null) try { DestItem = ShellItem.Open(dest); } catch { }
Name = name;
Result = hr;
}
/// Gets the destination folder.
/// The destination folder.
[MaybeNull]
public ShellItem DestFolder { get; protected set; }
/// Gets the destination item.
/// The destination item.
[MaybeNull]
public ShellItem DestItem { get; protected set; }
/// Gets the tranfer flag values.
/// The flags.
public TransferFlags Flags { get; protected set; }
/// Gets the name of the item.
/// The item name.
public string? Name { get; protected set; }
/// Gets the result of the operation.
/// The result.
public HRESULT Result { get; protected set; }
/// Gets the source item.
/// The source item.
[MaybeNull]
public ShellItem SourceItem { get; protected set; }
/// Returns a that represents this instance.
/// A that represents this instance.
public override string ToString() => $"HR:{Result};Src:{SourceItem};DFld:{DestFolder};Dst:{DestItem};Name:{Name}";
}
}