aboutsummaryrefslogtreecommitdiff
path: root/src/win/gui/TimerManager.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/win/gui/TimerManager.h')
-rw-r--r--src/win/gui/TimerManager.h61
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