From a48774744a4768941b8846761485d6255491f1b0 Mon Sep 17 00:00:00 2001 From: codereader Date: Sat, 26 Dec 2020 17:18:38 +0100 Subject: [PATCH] #5127: Add interfaces for managing favourite resources in a central manager class --- include/idecltypes.h | 12 ++++++++++++ include/ifavourites.h | 39 ++++++++++++++++++++++++++++++++++++++ tools/msvc/include.vcxproj | 2 ++ 3 files changed, 53 insertions(+) create mode 100644 include/idecltypes.h create mode 100644 include/ifavourites.h diff --git a/include/idecltypes.h b/include/idecltypes.h new file mode 100644 index 0000000000..6bf27294d6 --- /dev/null +++ b/include/idecltypes.h @@ -0,0 +1,12 @@ +#pragma once + +namespace decl +{ + +// Enumeration of declaration types supported by DarkRadiant +enum class Type +{ + Material, +}; + +} diff --git a/include/ifavourites.h b/include/ifavourites.h new file mode 100644 index 0000000000..9e01e3925a --- /dev/null +++ b/include/ifavourites.h @@ -0,0 +1,39 @@ +#pragma once + +#include +#include "imodule.h" +#include "idecltypes.h" + +namespace decl +{ + +class IFavouritesManager : + public RegisterableModule +{ +public: + virtual ~IFavouritesManager() {} + + // Adds the given declaration (as identified by the given path) to + // the set of favourites + virtual void addFavourite(decl::Type type, const std::string& path) = 0; + + // Removes the given declaration from the favourites set + virtual void removeFavourite(decl::Type type, const std::string& path) = 0; + + // Returns true if the given declaration is listed as favourite + virtual bool isFavourite(decl::Type type, const std::string& path) = 0; + + // Returns the whole set of favourites for the given declaration type + virtual std::set getFavourites(decl::Type type) = 0; +}; + +} + +const char* const MODULE_FAVOURITES_MANAGER("FavouritesManager"); + +inline decl::IFavouritesManager& GlobalFavouritesManager() +{ + static module::InstanceReference _reference(MODULE_FAVOURITES_MANAGER); + return _reference; +} + diff --git a/tools/msvc/include.vcxproj b/tools/msvc/include.vcxproj index b3b276f8aa..82c76add8b 100644 --- a/tools/msvc/include.vcxproj +++ b/tools/msvc/include.vcxproj @@ -109,6 +109,7 @@ + @@ -116,6 +117,7 @@ +