/* Общий GUI-таймер анимированных emoji: регистрирует LottieIcon и выдаёт ticked. * play запускает минимум PlaybackMs; shutdown останавливает таймер и очищает регистрацию. */ #pragma once #include #include #include #include class LottieIcon; class AnimTimer : public QObject { Q_OBJECT public: static AnimTimer *instance(); void registerIcon(const QString &key, LottieIcon *icon); void unregisterIcon(const QString &key); LottieIcon *icon(const QString &key) const; void logRegisteredIcons() const; // Наведение запускает минимум две секунды воспроизведения, затем каждый значок завершает свой цикл. static constexpr int PlaybackMs = 2000; void play(); static void shutdown(); signals: void ticked(); private slots: void onTimer(); private: AnimTimer(); QTimer m_timer; QHash m_icons; QElapsedTimer m_playback; };