From 8ad2966933957ac5d6ff8dcd5e732736fd5e4dc6 Mon Sep 17 00:00:00 2001 From: crupest Date: Sun, 15 May 2022 14:08:06 +0800 Subject: ... --- include/cru/platform/gui/osx/UiApplication.h | 64 ++++++++++++++++++++++++++++ 1 file changed, 64 insertions(+) create mode 100644 include/cru/platform/gui/osx/UiApplication.h (limited to 'include/cru/platform/gui/osx/UiApplication.h') diff --git a/include/cru/platform/gui/osx/UiApplication.h b/include/cru/platform/gui/osx/UiApplication.h new file mode 100644 index 00000000..2d2c119c --- /dev/null +++ b/include/cru/platform/gui/osx/UiApplication.h @@ -0,0 +1,64 @@ +#pragma once +#include "Resource.h" +#include "cru/platform/gui/UiApplication.h" + +#include +#include + +namespace cru::platform::gui::osx { +class OsxWindow; + +namespace details { +class OsxUiApplicationPrivate; +} + +class OsxUiApplication : public OsxGuiResource, public virtual IUiApplication { + friend details::OsxUiApplicationPrivate; + friend OsxWindow; + + public: + OsxUiApplication(); + + CRU_DELETE_COPY(OsxUiApplication) + CRU_DELETE_MOVE(OsxUiApplication) + + ~OsxUiApplication() override; + + public: + int Run() override; + + void RequestQuit(int quit_code) override; + void AddOnQuitHandler(std::function handler) override; + bool IsQuitOnAllWindowClosed() override; + void SetQuitOnAllWindowClosed(bool quit_on_all_window_closed) override; + + long long SetImmediate(std::function action) override; + long long SetTimeout(std::chrono::milliseconds milliseconds, + std::function action) override; + long long SetInterval(std::chrono::milliseconds milliseconds, + std::function action) override; + void CancelTimer(long long id) override; + + std::vector GetAllWindow() override; + + INativeWindow* CreateWindow() override; + + cru::platform::graphics::IGraphicsFactory* GetGraphicsFactory() override; + + ICursorManager* GetCursorManager() override; + + IClipboard* GetClipboard() override; + + IMenu* GetApplicationMenu() override; + + std::optional ShowSaveDialog(SaveDialogOptions options) override; + + std::optional> ShowOpenDialog( + OpenDialogOptions options) override; + + private: + void UnregisterWindow(OsxWindow* window); + + std::unique_ptr p_; +}; +} // namespace cru::platform::gui::osx -- cgit v1.2.3