1 // SPDX-License-Identifier: GPL-3.0-or-later 2 // SPDX-FileCopyrightText: 2017-2019 Alejandro Sirgo Rica & Contributors 3 4 #include "capturebutton.h" 5 #include "src/utils/colorutils.h" 6 #include "src/utils/confighandler.h" 7 #include "src/utils/globalvalues.h" 8 #include <QGraphicsDropShadowEffect> 9 CaptureButton(QWidget * parent)10CaptureButton::CaptureButton(QWidget* parent) 11 : QPushButton(parent) 12 { 13 init(); 14 } 15 CaptureButton(const QString & text,QWidget * parent)16CaptureButton::CaptureButton(const QString& text, QWidget* parent) 17 : QPushButton(text, parent) 18 { 19 init(); 20 } 21 CaptureButton(const QIcon & icon,const QString & text,QWidget * parent)22CaptureButton::CaptureButton(const QIcon& icon, 23 const QString& text, 24 QWidget* parent) 25 : QPushButton(icon, text, parent) 26 { 27 init(); 28 } 29 init()30void CaptureButton::init() 31 { 32 setCursor(Qt::ArrowCursor); 33 setFocusPolicy(Qt::NoFocus); 34 35 auto dsEffect = new QGraphicsDropShadowEffect(this); 36 dsEffect->setBlurRadius(5); 37 dsEffect->setOffset(0); 38 dsEffect->setColor(QColor(Qt::black)); 39 40 setGraphicsEffect(dsEffect); 41 } 42 globalStyleSheet()43QString CaptureButton::globalStyleSheet() 44 { 45 return CaptureButton(nullptr).styleSheet(); 46 } 47 styleSheet() const48QString CaptureButton::styleSheet() const 49 { 50 QString baseSheet = "CaptureButton { border: none;" 51 "padding: 3px 8px;" 52 "background-color: %1; color: %4 }" 53 "CaptureToolButton { border-radius: %3;" 54 "padding: 0; }" 55 "CaptureButton:hover { background-color: %2; }" 56 "CaptureButton:pressed:!hover { " 57 "background-color: %1; }"; 58 // define color when mouse is hovering 59 QColor contrast = ColorUtils::contrastColor(m_mainColor); 60 // foreground color 61 QColor color = ColorUtils::colorIsDark(m_mainColor) ? Qt::white : Qt::black; 62 63 return baseSheet.arg(m_mainColor.name()) 64 .arg(contrast.name()) 65 .arg(GlobalValues::buttonBaseSize() / 2) 66 .arg(color.name()); 67 } 68 setColor(const QColor & c)69void CaptureButton::setColor(const QColor& c) 70 { 71 m_mainColor = c; 72 setStyleSheet(styleSheet()); 73 } 74 75 QColor CaptureButton::m_mainColor = ConfigHandler().uiMainColorValue(); 76