#include "TooltipPreviewImage.hpp"

#include "Application.hpp"
#include "singletons/WindowManager.hpp"
#include "widgets/TooltipWidget.hpp"

namespace chatterino {
TooltipPreviewImage &TooltipPreviewImage::getInstance()
{
    static TooltipPreviewImage *instance = new TooltipPreviewImage();
    return *instance;
}

TooltipPreviewImage::TooltipPreviewImage()
{
    connections_.push_back(getApp()->windows->gifRepaintRequested.connect([&] {
        auto tooltipWidget = TooltipWidget::getInstance();
        if (this->image_ && !tooltipWidget->isHidden())
        {
            auto pixmap = this->image_->pixmapOrLoad();
            if (pixmap)
            {
                tooltipWidget->setImage(*pixmap);
            }
        }
        else
        {
            tooltipWidget->clearImage();
        }
    }));
}

void TooltipPreviewImage::setImage(ImagePtr image)
{
    this->image_ = image;
}
}  // namespace chatterino
