#pragma once namespace UI { class ID { public: static constexpr auto INVALID = 0; enum class Screens { Background = static_cast(INVALID) + 1, Home, PopUp, INVALID_SCREEN_ID }; enum class Widgets { Slider = static_cast(Screens::INVALID_SCREEN_ID) + 1, Button, Label, List, DropDown, Keyboard, BrightnessSlider, INVALID_WIDGET_ID }; enum class Pages { Settings = static_cast(Widgets::INVALID_WIDGET_ID) + 1, DisplaySettings, WifiSettings, SystemSettings, Demo, INVALID_PAGE_ID }; ID() : mId(INVALID){}; ID(ID::Screens aScreenId) : mId(static_cast(aScreenId)){}; ID(ID::Widgets aWidgetId) : mId(static_cast(aWidgetId)){}; ID(ID::Pages aPageId) : mId(static_cast(aPageId)){}; private: const int mId; }; } // namespace UI