notifierbox.cpp 1.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364
  1. // SPDX-License-Identifier: GPL-3.0-or-later
  2. // SPDX-FileCopyrightText: 2017-2019 Alejandro Sirgo Rica & Contributors
  3. #include "notifierbox.h"
  4. #include "src/utils/colorutils.h"
  5. #include "src/utils/confighandler.h"
  6. #include "src/utils/globalvalues.h"
  7. #include <QApplication>
  8. #include <QPainter>
  9. #include <QTimer>
  10. NotifierBox::NotifierBox(QWidget* parent)
  11. : QWidget(parent)
  12. {
  13. m_timer = new QTimer(this);
  14. m_timer->setSingleShot(true);
  15. m_timer->setInterval(1200);
  16. connect(m_timer, &QTimer::timeout, this, &NotifierBox::hide);
  17. m_bgColor = ConfigHandler().uiMainColorValue();
  18. m_foregroundColor =
  19. (ColorUtils::colorIsDark(m_bgColor) ? Qt::white : Qt::black);
  20. m_bgColor.setAlpha(180);
  21. const int size =
  22. (GlobalValues::buttonBaseSize() + GlobalValues::buttonBaseSize() / 2) *
  23. qApp->devicePixelRatio();
  24. setFixedSize(QSize(size, size));
  25. }
  26. void NotifierBox::enterEvent(QEvent*)
  27. {
  28. hide();
  29. }
  30. void NotifierBox::paintEvent(QPaintEvent*)
  31. {
  32. QPainter painter(this);
  33. // draw Ellipse
  34. painter.setRenderHint(QPainter::Antialiasing);
  35. painter.setBrush(QBrush(m_bgColor, Qt::SolidPattern));
  36. painter.setPen(QPen(Qt::transparent));
  37. painter.drawEllipse(rect());
  38. // Draw the text:
  39. painter.setPen(QPen(m_foregroundColor));
  40. painter.drawText(rect(), Qt::AlignCenter, m_message);
  41. }
  42. void NotifierBox::showMessage(const QString& msg)
  43. {
  44. m_message = msg;
  45. update();
  46. show();
  47. m_timer->start();
  48. }
  49. void NotifierBox::showColor(const QColor& color)
  50. {
  51. Q_UNUSED(color)
  52. m_message = QLatin1String("");
  53. }
  54. void NotifierBox::hideEvent(QHideEvent* event)
  55. {
  56. emit hidden();
  57. }