xref: /aosp_15_r20/external/coreboot/util/coreboot-configurator/src/application/ToggleSwitch.cpp (revision b9411a12aaaa7e1e6a6fb7c5e057f44ee179a49c)
1 /* SPDX-License-Identifier: GPL-2.0-only */
2 
3 #include <QEvent>
4 #include <QGuiApplication>
5 #include <QPainter>
6 #include <QPalette>
7 #include <QTimer>
8 
9 #include "ToggleSwitch.h"
10 #include "ToggleSwitch.svg.h"
11 
12 const QByteArray ToggleSwitch::s_toggleOffSvgContent =  ToggleSwitchSVG::s_toggledOffContent;
13 const QByteArray ToggleSwitch::s_toggleOnSvgContent = ToggleSwitchSVG::s_toggledOnContent;
14 const int ToggleSwitch::s_colorPosInToggleOn = ToggleSwitch::s_toggleOnSvgContent.indexOf("#1a73e8");
15 
ToggleSwitch(QWidget * parent)16 ToggleSwitch::ToggleSwitch(QWidget *parent) : QCheckBox(parent){
17 
18 	setFixedWidth(50);
19 	setFixedHeight(width()/2);
20 
21 	m_toggleOnSvgContentColored = s_toggleOnSvgContent;
22 }
23 
paintEvent(QPaintEvent * event)24 void ToggleSwitch::paintEvent(QPaintEvent *event){
25 	QPainter p(this);
26 
27 	if(isChecked()){
28 		auto accent = palette().highlight().color();
29 		m_toggleOnSvgContentColored = m_toggleOnSvgContentColored.replace(s_colorPosInToggleOn, 7, accent.name().toLatin1());
30 
31 		m_svgr.load(m_toggleOnSvgContentColored);
32 	} else {
33 		m_svgr.load(s_toggleOffSvgContent);
34 	}
35 
36 	m_svgr.render(&p, this->rect());
37 	p.end();
38 }
39