diff --git a/widgethelpers.cpp b/widgethelpers.cpp
index 552bb2fae9224547d759c3f60c81af21f4fc88f1..2e2afb4fae8838d80b5275c474e21e3651695461 100644
--- a/widgethelpers.cpp
+++ b/widgethelpers.cpp
@@ -75,6 +75,50 @@ FadeOutable::slotTimeout()
     Q_EMIT willFadeOut();
 }
 
+Blinkable::Blinkable(QWidget* parent)
+    : QWidget(parent)
+{
+    setAttribute(Qt::WA_NoSystemBackground);
+    fadeAnimation_ = new FadeAnimation(this, blinkTime_);
+}
+
+Blinkable::~Blinkable()
+{}
+
+void
+Blinkable::slotAnimationFinished()
+{
+    fadeAnimation_->setDirection(fadeAnimation_->direction() == QAbstractAnimation::Forward
+                                 ? QAbstractAnimation::Backward
+                                 : QAbstractAnimation::Forward);
+    fadeAnimation_->start();
+}
+
+void
+Blinkable::start()
+{
+    connection_ = connect(fadeAnimation_, &QPropertyAnimation::finished, this, &Blinkable::slotAnimationFinished);
+    fadeAnimation_->setDirection(QAbstractAnimation::Forward);
+    fadeAnimation_->start();
+}
+
+void
+Blinkable::stop()
+{
+    disconnect(connection_);
+    fadeAnimation_->stop();
+}
+
+void
+Blinkable::paintEvent(QPaintEvent *event)
+{
+    QWidget::paintEvent(event);
+    if(!pixmap_)
+        return;
+    QPainter painter(this);
+    painter.drawPixmap(rect(), *pixmap_);
+}
+
 VignetteWidget::VignetteWidget(QWidget* parent)
     : QWidget(parent)
 {
diff --git a/widgethelpers.h b/widgethelpers.h
index f0fe5a5e4732576e0b5f95bfbee1833dd06be16e..c5eeb6d44061abbf1021df01c4ba9c7f92a7090a 100644
--- a/widgethelpers.h
+++ b/widgethelpers.h
@@ -24,6 +24,7 @@
 #include <QTimer>
 #include <QMouseEvent>
 #include <QPainter>
+#include <QPixmap>
 
 class FadeOutable : public QWidget
 {
@@ -60,6 +61,34 @@ private:
 
 };
 
+class Blinkable : public QWidget
+{
+    Q_OBJECT
+public:
+    explicit Blinkable(QWidget* parent = nullptr);
+    ~Blinkable();
+
+    void start();
+    void stop();
+
+    void setBlinkTime(const quint64 ms) { blinkTime_ = ms; }
+    void setPixmap(QPixmap* pixmap) { pixmap_ = pixmap; }
+    void unsetPixmap() { pixmap_ = nullptr; }
+
+protected:
+    void paintEvent(QPaintEvent *event);
+
+private slots:
+    void slotAnimationFinished();
+
+private:
+    FadeAnimation* fadeAnimation_;
+
+    quint64 blinkTime_{ 1000 };
+    QPixmap* pixmap_{ nullptr };
+    QMetaObject::Connection connection_;
+};
+
 class VignetteWidget : public QWidget
 {
     Q_OBJECT