nopenpilot/selfdrive/ui/qt/widgets/controls.cc

67 lines
1.8 KiB
C++

#include "selfdrive/ui/qt/widgets/controls.h"
QFrame *horizontal_line(QWidget *parent) {
QFrame *line = new QFrame(parent);
line->setFrameShape(QFrame::StyledPanel);
line->setStyleSheet(R"(
margin-left: 40px;
margin-right: 40px;
border-width: 1px;
border-bottom-style: solid;
border-color: gray;
)");
line->setFixedHeight(2);
return line;
}
AbstractControl::AbstractControl(const QString &title, const QString &desc, const QString &icon, QWidget *parent) : QFrame(parent) {
QVBoxLayout *vlayout = new QVBoxLayout();
vlayout->setMargin(0);
hlayout = new QHBoxLayout;
hlayout->setMargin(0);
hlayout->setSpacing(20);
// left icon
if (!icon.isEmpty()) {
QPixmap pix(icon);
QLabel *icon = new QLabel();
icon->setPixmap(pix.scaledToWidth(80, Qt::SmoothTransformation));
icon->setSizePolicy(QSizePolicy(QSizePolicy::Fixed, QSizePolicy::Fixed));
hlayout->addWidget(icon);
}
// title
title_label = new QPushButton(title);
title_label->setStyleSheet("font-size: 50px; font-weight: 400; text-align: left;");
hlayout->addWidget(title_label);
vlayout->addLayout(hlayout);
// description
if (!desc.isEmpty()) {
description = new QLabel(desc);
description->setContentsMargins(40, 20, 40, 20);
description->setStyleSheet("font-size: 40px; color:grey");
description->setWordWrap(true);
description->setVisible(false);
vlayout->addWidget(description);
connect(title_label, &QPushButton::clicked, [=]() {
if (!description->isVisible()) {
emit showDescription();
}
description->setVisible(!description->isVisible());
});
}
setLayout(vlayout);
setStyleSheet("background-color: transparent;");
}
void AbstractControl::hideEvent(QHideEvent *e) {
if(description != nullptr) {
description->hide();
}
}