// Copyright (c) 2012-2023 Wojciech Figat. All rights reserved.
#pragma once
#if PLATFORM_WINDOWS
#include "Engine/Platform/Win32/Win32FileSystem.h"
///
/// Windows platform implementation of filesystem service
///
class FLAXENGINE_API WindowsFileSystem : public Win32FileSystem
{
public:
///
/// Moves a file to the recycle bin with possible undo instead of removing it permanently.
///
/// The path to the file to delete.
/// True if cannot perform that operation, otherwise false.
static bool MoveFileToRecycleBin(const StringView& path);
public:
static bool AreFilePathsEqual(const StringView& path1, const StringView& path2);
public:
///
/// Gets the special folder path.
///
/// The folder type.
/// The result full path.
static void GetSpecialFolderPath(const SpecialFolder type, String& result);
public:
// [Win32FileSystem]
static bool ShowOpenFileDialog(Window* parentWindow, const StringView& initialDirectory, const StringView& filter, bool multiSelect, const StringView& title, Array& filenames);
static bool ShowSaveFileDialog(Window* parentWindow, const StringView& initialDirectory, const StringView& filter, bool multiSelect, const StringView& title, Array& filenames);
static bool ShowBrowseFolderDialog(Window* parentWindow, const StringView& initialDirectory, const StringView& title, String& path);
static bool ShowFileExplorer(const StringView& path);
};
#endif