#include "animtimer.h" #include "lottieicon.h" AnimTimer::AnimTimer() { m_timer.setInterval(33); connect(&m_timer, &QTimer::timeout, this, &AnimTimer::onTimer); m_timer.start(); } AnimTimer *AnimTimer::instance() { static AnimTimer s; return &s; } void AnimTimer::registerIcon(const QString &key, LottieIcon *icon) { m_icons.insert(key, icon); } void AnimTimer::unregisterIcon(const QString &key) { m_icons.remove(key); } LottieIcon *AnimTimer::icon(const QString &key) const { return m_icons.value(key, nullptr); } void AnimTimer::activate() { if (m_activeRef++ == 0) { for (auto *icon : m_icons) icon->advanceFrame(); emit ticked(); } } void AnimTimer::deactivate() { if (m_activeRef > 0) m_activeRef--; } void AnimTimer::onTimer() { if (m_activeRef <= 0) return; for (auto *icon : m_icons) icon->advanceFrame(); emit ticked(); }