20 #ifndef LIBREPCB_EDITOR_RULECHECKLISTWIDGET_H 21 #define LIBREPCB_EDITOR_RULECHECKLISTWIDGET_H 27 #include <optional/tl/optional.hpp> 47 std::shared_ptr<const RuleCheckMessage> msg) noexcept = 0;
49 std::shared_ptr<const RuleCheckMessage> msg) noexcept = 0;
51 std::shared_ptr<const RuleCheckMessage> msg) noexcept = 0;
53 std::shared_ptr<const RuleCheckMessage> msg,
bool approve) noexcept = 0;
55 std::shared_ptr<const RuleCheckMessage> msg) noexcept = 0;
57 std::shared_ptr<const RuleCheckMessage> msg) noexcept = 0;
79 QWidget* parent =
nullptr) noexcept
83 mIconLabel(new QLabel(this)) {
85 QHBoxLayout* layout =
new QHBoxLayout(
this);
86 layout->setContentsMargins(0, 0, 0, 0);
87 layout->setSpacing(0);
90 mIconLabel->setScaledContents(
true);
91 mIconLabel->setPixmap(msg->getSeverityIcon().pixmap(
92 48, approved ? QIcon::Disabled : QIcon::Normal));
93 layout->addWidget(mIconLabel.data());
94 layout->addSpacing(3);
97 QLabel* lblMsg =
new QLabel(msg->getMessage(),
this);
98 lblMsg->setToolTip(msg->getMessage());
100 QFont font = lblMsg->font();
101 font.setItalic(
true);
102 font.setStrikeOut(
true);
103 lblMsg->setFont(font);
105 layout->addWidget(lblMsg);
106 layout->addSpacing(3);
107 layout->setStretch(1, 100);
110 if (mHandler.ruleCheckFixAvailable(mMessage)) {
111 QToolButton* btnFix =
new QToolButton(
this);
112 btnFix->setText(tr(
"Fix"));
113 btnFix->setToolTip(tr(
"Fix Problem"));
114 btnFix->setStatusTip(
115 tr(
"Automatically apply a modification to fix this message"));
116 connect(btnFix, &QToolButton::clicked,
this,
117 [
this]() { mHandler.ruleCheckFixRequested(mMessage); });
118 layout->addWidget(btnFix);
122 QToolButton* btnApprove =
new QToolButton(
this);
123 btnApprove->setText(
"✔");
124 btnApprove->setToolTip(tr(
"Approve/Disapprove"));
125 btnApprove->setStatusTip(tr(
"Mark/unmark this message as approved"));
126 btnApprove->setCheckable(
true);
127 btnApprove->setChecked(approved);
128 connect(btnApprove, &QToolButton::clicked,
this, [
this, msg](
bool checked) {
129 mHandler.ruleCheckApproveRequested(mMessage, checked);
131 layout->addWidget(btnApprove);
134 QToolButton* btnDetails =
new QToolButton(
this);
135 btnDetails->setText(
"?");
136 btnDetails->setToolTip(tr(
"Details"));
137 btnDetails->setStatusTip(tr(
"Show more information about this message"));
138 connect(btnDetails, &QToolButton::clicked,
this,
139 [
this]() { mHandler.ruleCheckDescriptionRequested(mMessage); });
140 layout->addWidget(btnDetails);
151 QWidget::resizeEvent(event);
152 mIconLabel->setFixedWidth(mIconLabel->height());
179 return mUnapprovedMessageCount;
183 void setReadOnly(
bool readOnly) noexcept;
185 void setMessages(
const tl::optional<RuleCheckMessageList>& messages) noexcept;
186 void setApprovals(
const QSet<SExpression>& approvals) noexcept;
192 void updateList() noexcept;
193 void currentItemChanged(QListWidgetItem* current,
194 QListWidgetItem* previous) noexcept;
195 void itemDoubleClicked(QListWidgetItem* item) noexcept;
197 std::shared_ptr<const RuleCheckMessage> msg) noexcept
override;
199 std::shared_ptr<const RuleCheckMessage> msg) noexcept
override;
201 std::shared_ptr<const RuleCheckMessage> msg) noexcept
override;
203 bool approve) noexcept
override;
205 std::shared_ptr<const RuleCheckMessage> msg) noexcept
override;
207 std::shared_ptr<const RuleCheckMessage> msg) noexcept
override;
Definition: occmodel.cpp:76
QVector< std::shared_ptr< const RuleCheckMessage > > RuleCheckMessageList
Definition: rulecheckmessage.h:104
Definition: rulechecklistwidget.h:44
virtual ~IF_RuleCheckHandler() noexcept
Definition: rulechecklistwidget.h:62
virtual void ruleCheckMessageSelected(std::shared_ptr< const RuleCheckMessage > msg) noexcept=0
virtual void ruleCheckApproveRequested(std::shared_ptr< const RuleCheckMessage > msg, bool approve) noexcept=0
IF_RuleCheckHandler() noexcept
Definition: rulechecklistwidget.h:60
virtual bool ruleCheckFixAvailable(std::shared_ptr< const RuleCheckMessage > msg) noexcept=0
virtual void ruleCheckMessageDoubleClicked(std::shared_ptr< const RuleCheckMessage > msg) noexcept=0
virtual void ruleCheckDescriptionRequested(std::shared_ptr< const RuleCheckMessage > msg) noexcept=0
virtual void ruleCheckFixRequested(std::shared_ptr< const RuleCheckMessage > msg) noexcept=0
IF_RuleCheckHandler(const IF_RuleCheckHandler &) noexcept
Definition: rulechecklistwidget.h:61