#include "UI/Source/Demo.h" #include using namespace vl::collections; using namespace vl::stream; using namespace vl::reflection::description; using namespace demo; int CALLBACK WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int CmdShow) { return SetupWindowsDirect2DRenderer(); } Ptr folderImage; Ptr contactImage; class Category : public Object, public ICategory { protected: ICategory* parent; WString name; list::ObservableList> folders; public: Category(ICategory* _parent) :parent(_parent) { } ICategory* GetParent()override { return parent; } WString GetName()override { return name; } Ptr GetImage()override { return folderImage; } Ptr GetFolders()override { return folders.GetWrapper(); } Ptr GetContacts()override { return nullptr; } }; class StaticCategory : public Category { public: StaticCategory() :Category(nullptr) { } WString GetName()override { return L"My Address Book"; } }; class RootCategory : public Object, public ICategory { protected: list::ObservableList> folders; public: RootCategory() { folders.Add(new StaticCategory); } ICategory* GetParent()override { return nullptr; } WString GetName()override { return L""; } Ptr GetImage()override { return nullptr; } Ptr GetFolders()override { return folders.GetWrapper(); } Ptr GetContacts()override { return nullptr; } }; class ViewModel : public Object, public IViewModel { protected: Ptr rootCategory; Ptr selectedCategory; public: ViewModel() { rootCategory = new RootCategory; } Ptr GetRootCategory()override { return rootCategory; } Ptr GetSelectedCategory()override { return selectedCategory; } void SetSelectedCategory(Ptr value)override { if (selectedCategory != value) { selectedCategory = value; SelectedCategoryChanged(); } } void AddCategory(WString name) { } void RemoveCategory() { } }; void GuiMain() { { List errors; FileStream fileStream(L"../UIRes/AddressBook.bin", FileStream::ReadOnly); auto resource = GuiResource::LoadPrecompiledBinary(fileStream, errors); GetResourceManager()->SetResource(L"Resource", resource); folderImage = resource->GetImageByPath(L"Images/Folder"); contactImage = resource->GetImageByPath(L"Images/Contact"); } MainWindow window(new ViewModel); window.MoveToScreenCenter(); GetApplication()->Run(&window); folderImage = nullptr; contactImage = nullptr; }