diff options
Diffstat (limited to 'src/win/gui/TimerManager.h')
-rw-r--r-- | src/win/gui/TimerManager.h | 61 |
1 files changed, 0 insertions, 61 deletions
diff --git a/src/win/gui/TimerManager.h b/src/win/gui/TimerManager.h deleted file mode 100644 index c44bd5bd..00000000 --- a/src/win/gui/TimerManager.h +++ /dev/null @@ -1,61 +0,0 @@ -#pragma once -#include "cru/common/Event.h" -#include "cru/win/WinPreConfig.h" - -#include "cru/common/Base.h" -#include "cru/win/gui/GodWindow.h" -#include "cru/win/gui/WindowNativeMessageEventArgs.h" - -#include <chrono> -#include <functional> -#include <optional> -#include <unordered_map> - -namespace cru::platform::gui::win { -enum class TimerType { Immediate, Timeout, Interval }; - -struct TimerInfo { - TimerInfo(long long id, TimerType type, int period, - std::function<void()> action, UINT_PTR native_timer_id = 0) - : id(id), - type(type), - period(period), - action(std::move(action)), - native_timer_id(native_timer_id) {} - - long long id; - TimerType type; - int period; // in milliseconds - std::function<void()> action; - UINT_PTR native_timer_id; -}; - -class TimerManager : public Object { - public: - TimerManager(GodWindow* god_window); - - CRU_DELETE_COPY(TimerManager) - CRU_DELETE_MOVE(TimerManager) - - ~TimerManager() override = default; - - // Period is in milliseconds. When type is immediate, it is not checked and - // used. - long long SetTimer(TimerType type, int period, std::function<void()> action); - void CancelTimer(long long id); - - private: - void HandleGodWindowMessage(WindowNativeMessageEventArgs& args); - - void CreateNativeTimer(TimerInfo* info); - void KillNativeTimer(TimerInfo* info); - - private: - GodWindow* god_window_; - - EventRevokerListGuard event_guard_; - - long long next_id_ = 1; - std::unordered_map<long long, TimerInfo> info_map_; -}; -} // namespace cru::platform::gui::win |