From dc09ba073744292a4d4af0445e5095f424fffa22 Mon Sep 17 00:00:00 2001 From: rtk0c Date: Wed, 9 Jun 2021 22:18:32 -0700 Subject: Refactor asset management UI into AssetList --- core/src/Model/Assets.hpp | 41 +++++++++++++++++++++++++++++++---------- 1 file changed, 31 insertions(+), 10 deletions(-) (limited to 'core/src/Model/Assets.hpp') diff --git a/core/src/Model/Assets.hpp b/core/src/Model/Assets.hpp index feb4432..e035f51 100644 --- a/core/src/Model/Assets.hpp +++ b/core/src/Model/Assets.hpp @@ -1,8 +1,9 @@ -#pragma once +#pragma once #include "Utils/UUID.hpp" -#include +#include "Assets.hpp" + #include #include #include @@ -27,15 +28,22 @@ public: virtual ~Asset() = default; }; +enum class NameSelectionError +{ + None, + Duplicated, + Empty, +}; + class AssetList { private: - tsl::array_map mAssets; - tsl::array_map> mCache; - int mCacheSizeLimit = 0; + class Private; + std::unique_ptr mPrivate; public: - virtual ~AssetList() = default; + AssetList(); + virtual ~AssetList(); // TODO support file watches void Reload(); @@ -58,8 +66,16 @@ public: { const SavedAsset* SelectedAsset = nullptr; }; - void DrawBigIcons(ListState& state); - void DrawDetails(ListState& state); + void DisplayBigIconsList(ListState& state); + void DisplayDetailsTable(ListState& state); + + struct PopupState : public ListState + { + }; + void OpenBigIconsPopup(); + void DisplayBigIconsPopup(PopupState& state); + void OpenDetailsPopup(); + void DisplayDetailsPopup(PopupState& state); protected: virtual void DiscoverFiles(const std::function& callback) const = 0; @@ -77,10 +93,15 @@ protected: virtual uuids::uuid RetrieveUuidFromFile(const std::filesystem::path& file) const = 0; virtual std::filesystem::path RetrievePathFromAsset(const SavedAsset& asset) const = 0; + virtual void DisplayAssetCreator(PopupState& state) = 0; + /// This should call ImGui::BeginTable() along with other accessories such as setting up the header row. virtual void SetupDetailsTable(const char* tableId) const = 0; - virtual void DrawBigIcon(const SavedAsset& asset) const = 0; - virtual void DrawDetailsTableRow(const SavedAsset& asset) const = 0; + virtual void DrawBigIcon(ListState& state, const SavedAsset& asset) const = 0; + virtual void DrawDetailsTableRow(ListState& state, const SavedAsset& asset) const = 0; + +private: + void DisplayPopupControls(PopupState& state); }; template -- cgit v1.2.3-70-g09d2