summary refs log tree commit diff
path: root/src/ui/Badge.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/ui/Badge.cpp')
-rw-r--r--src/ui/Badge.cpp222
1 files changed, 0 insertions, 222 deletions
diff --git a/src/ui/Badge.cpp b/src/ui/Badge.cpp
deleted file mode 100644

index 1b5aba2f..00000000 --- a/src/ui/Badge.cpp +++ /dev/null
@@ -1,222 +0,0 @@ -// SPDX-FileCopyrightText: 2021 Nheko Contributors -// -// SPDX-License-Identifier: GPL-3.0-or-later - -#include <QPainter> - -#include "Badge.h" - -Badge::Badge(QWidget *parent) - : OverlayWidget(parent) -{ - init(); -} - -Badge::Badge(const QIcon &icon, QWidget *parent) - : OverlayWidget(parent) -{ - init(); - setIcon(icon); -} - -Badge::Badge(const QString &text, QWidget *parent) - : OverlayWidget(parent) -{ - init(); - setText(text); -} - -void -Badge::init() -{ - x_ = 0; - y_ = 0; - // TODO: Make padding configurable. - padding_ = 5; - diameter_ = 24; - - setAttribute(Qt::WA_TransparentForMouseEvents); - - QFont _font(font()); - _font.setPointSizeF(7.5); - _font.setStyleName("Bold"); - - setFont(_font); - setText(""); -} - -QString -Badge::text() const -{ - return text_; -} - -QIcon -Badge::icon() const -{ - return icon_; -} - -QSize -Badge::sizeHint() const -{ - const int d = diameter(); - return QSize(d + 4, d + 4); -} - -qreal -Badge::relativeYPosition() const -{ - return y_; -} - -qreal -Badge::relativeXPosition() const -{ - return x_; -} - -QPointF -Badge::relativePosition() const -{ - return QPointF(x_, y_); -} - -QColor -Badge::backgroundColor() const -{ - if (!background_color_.isValid()) - return QColor("black"); - - return background_color_; -} - -QColor -Badge::textColor() const -{ - if (!text_color_.isValid()) - return QColor("white"); - - return text_color_; -} - -void -Badge::setTextColor(const QColor &color) -{ - text_color_ = color; -} - -void -Badge::setBackgroundColor(const QColor &color) -{ - background_color_ = color; -} - -void -Badge::setRelativePosition(const QPointF &pos) -{ - setRelativePosition(pos.x(), pos.y()); -} - -void -Badge::setRelativePosition(qreal x, qreal y) -{ - x_ = x; - y_ = y; - update(); -} - -void -Badge::setRelativeXPosition(qreal x) -{ - x_ = x; - update(); -} - -void -Badge::setRelativeYPosition(qreal y) -{ - y_ = y; - update(); -} - -void -Badge::setIcon(const QIcon &icon) -{ - icon_ = icon; - update(); -} - -void -Badge::setText(const QString &text) -{ - text_ = text; - - if (!icon_.isNull()) - icon_ = QIcon(); - - size_ = fontMetrics().size(Qt::TextShowMnemonic, text); - - update(); -} - -void -Badge::setDiameter(int diameter) -{ - if (diameter > 0) { - diameter_ = diameter; - update(); - } -} - -void -Badge::paintEvent(QPaintEvent *) -{ - QPainter painter(this); - painter.setRenderHint(QPainter::Antialiasing); - painter.translate(x_, y_); - - QBrush brush; - brush.setStyle(Qt::SolidPattern); - - painter.setBrush(brush); - painter.setPen(Qt::NoPen); - - const int d = diameter(); - - QRectF r(0, 0, d, d); - r.translate(QPointF((width() - d), (height() - d)) / 2); - - if (icon_.isNull()) { - QPen pen; - // TODO: Make badge width configurable. - pen.setWidth(1); - pen.setColor(textColor()); - - painter.setPen(pen); - painter.drawEllipse(r); - - painter.setPen(textColor()); - painter.setBrush(Qt::NoBrush); - painter.drawText(r.translated(0, -0.5), Qt::AlignCenter, text_); - } else { - painter.drawEllipse(r); - QRectF q(0, 0, 16, 16); - q.moveCenter(r.center()); - QPixmap pixmap = icon().pixmap(16, 16); - QPainter icon(&pixmap); - icon.setCompositionMode(QPainter::CompositionMode_SourceIn); - icon.fillRect(pixmap.rect(), textColor()); - painter.drawPixmap(q.toRect(), pixmap); - } -} - -int -Badge::diameter() const -{ - if (icon_.isNull()) { - return qMax(size_.width(), size_.height()) + padding_; - } - - return diameter_; -}