#include "file_functions.h" #include "aoimage.h" #include AOImage::AOImage(QWidget *parent, AOApplication *p_ao_app, bool make_static) : QLabel(parent) { m_parent = parent; ao_app = p_ao_app; is_static = make_static; if (!is_static) // Only create the QMovie if we're non-static { movie = new QMovie(this); connect(movie, &QMovie::frameChanged, [=]{ QPixmap f_pixmap = movie->currentPixmap(); f_pixmap = f_pixmap.scaled(this->size(), Qt::IgnoreAspectRatio); this->setPixmap(f_pixmap); if (masked) { this->setMask(f_pixmap.mask()); } }); } } AOImage::~AOImage() {} bool AOImage::set_image(QString p_image, QString p_misc) { QString p_image_resolved = ao_app->get_image(p_image, ao_app->current_theme, ao_app->get_subtheme(), ao_app->default_theme, p_misc, "", "", is_static || !ao_app->get_animated_theme()); if (!file_exists(p_image_resolved)) { qWarning() << "could not find image" << p_image; return false; } path = p_image_resolved; if (!is_static) { movie->stop(); movie->setFileName(path); if (ao_app->get_animated_theme() && movie->frameCount() > 1) { movie->start(); } } if (is_static || !ao_app->get_animated_theme() || movie->frameCount() <= 1) { QPixmap f_pixmap(path); f_pixmap = f_pixmap.scaled(this->size(), Qt::IgnoreAspectRatio); this->setPixmap(f_pixmap); if (masked) { this->setMask(f_pixmap.mask()); } } return true; }