#include "animtimer.h" #include "lottieicon.h" #include "debug_ui.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::shutdown() { instance()->m_timer.stop(); instance()->m_icons.clear(); DEBUG_DEBUG(DEBUG_CATEGORY_GENERAL, "AnimTimer: shutdown"); } 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(); } void AnimTimer::logRegisteredIcons() const { for (auto it = m_icons.constBegin(); it != m_icons.constEnd(); ++it) { LottieIcon *icon = it.value(); GUI_DEBUG("LottieIcon: path=%s frames=%d size=%dx%d tgsSize=%d valid=%d", qPrintable(it.key()), icon->frameCount(), icon->originalSize().width(), icon->originalSize().height(), icon->tgsSize(), (int)icon->isValid()); } }