using System;
using System.Drawing;
using System.IO;
public static class DisplayFusionFunction
{
	public static void Run(IntPtr windowHandle)
	{
		// Change this to false if you don't want to overwrite existing files
		bool overwriteDestination = true;
		
		// Set the source and destination folders here
		string sourceFolder = @"D:\temp\CodePreviewHandler";
		string destinationFolder = @"D:\temp\CodePreviewHandler Copy";
		
		// Copy the source to the destination (change "true" to "false" if you don't want to copy sub-folders)
		CopyDirectory(sourceFolder, destinationFolder, true, overwriteDestination);
	}
	
	static void CopyDirectory(string sourceDir, string destinationDir, bool recursive, bool overwrite)
	// Grabbed this code from the Microsoft docs: https://docs.microsoft.com/en-us/dotnet/standard/io/how-to-copy-directories
	{
	    // Get information about the source directory
	    var dir = new DirectoryInfo(sourceDir);
	
	    // Check if the source directory exists
	    if (!dir.Exists)
	        throw new DirectoryNotFoundException($"Source directory not found: {dir.FullName}");
	
	    // Cache directories before we start copying
	    DirectoryInfo[] dirs = dir.GetDirectories();
	
	    // Create the destination directory
	    Directory.CreateDirectory(destinationDir);
	
	    // Get the files in the source directory and copy to the destination directory
	    foreach (FileInfo file in dir.GetFiles())
	    {
	        string targetFilePath = Path.Combine(destinationDir, file.Name);
	        file.CopyTo(targetFilePath, overwrite);
	    }
	
	    // If recursive and copying subdirectories, recursively call this method
	    if (recursive)
	    {
	        foreach (DirectoryInfo subDir in dirs)
	        {
	            string newDestinationDir = Path.Combine(destinationDir, subDir.Name);
	            CopyDirectory(subDir.FullName, newDestinationDir, true, overwrite);
	        }
	    }
	}
}