tomato/src/status_indicator.hpp
Green Sky c29aa523dc
Some checks are pending
ContinuousDelivery / linux-ubuntu (push) Waiting to run
ContinuousDelivery / android (map[ndk_abi:arm64-v8a vcpkg_toolkit:arm64-android]) (push) Waiting to run
ContinuousDelivery / android (map[ndk_abi:armeabi-v7a vcpkg_toolkit:arm-neon-android]) (push) Waiting to run
ContinuousDelivery / android (map[ndk_abi:x86_64 vcpkg_toolkit:x64-android]) (push) Waiting to run
ContinuousDelivery / windows (push) Waiting to run
ContinuousDelivery / windows-asan (push) Waiting to run
ContinuousDelivery / dumpsyms (push) Blocked by required conditions
ContinuousDelivery / release (push) Blocked by required conditions
ContinuousIntegration / linux (push) Waiting to run
ContinuousIntegration / android (map[ndk_abi:arm64-v8a vcpkg_toolkit:arm64-android]) (push) Waiting to run
ContinuousIntegration / android (map[ndk_abi:armeabi-v7a vcpkg_toolkit:arm-neon-android]) (push) Waiting to run
ContinuousIntegration / android (map[ndk_abi:x86_64 vcpkg_toolkit:x64-android]) (push) Waiting to run
ContinuousIntegration / macos (push) Waiting to run
ContinuousIntegration / windows (push) Waiting to run
contact 4 refactor
2025-03-06 19:12:35 +01:00

40 lines
715 B
C++

#pragma once
#include <solanaceae/message3/registry_message_model.hpp>
#include "./sys_tray.hpp"
#include <SDL3/SDL.h>
// service that sets window and tray icon depending on program state
class StatusIndicator {
RegistryMessageModelI& _rmm;
ContactStore4I& _cs;
SDL_Window* _main_window;
SystemTray* _tray;
float _cooldown {1.f};
enum class State {
base,
unread,
none, // only used for initialization
} _state = State::none;
void updateState(State state);
public:
StatusIndicator(
RegistryMessageModelI& rmm,
ContactStore4I& cs,
SDL_Window* main_window,
SystemTray* tray = nullptr
);
// does not actually render, just on the render thread
void render(float delta);
};