1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
|
// Copyright (C) 2024 The Qt Company Ltd.
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only WITH Qt-GPL-exception-1.0
#include "summarywidget.h"
#include "qtcassert.h"
#include "utilsicons.h"
#include <QVBoxLayout>
namespace Utils {
SummaryWidget::SummaryWidget(const QMap<int, QString> &validationPoints, const QString &validText,
const QString &invalidText, DetailsWidget *detailsWidget)
: QWidget(detailsWidget)
, m_validText(validText)
, m_invalidText(invalidText)
, m_detailsWidget(detailsWidget)
{
QTC_CHECK(m_detailsWidget);
auto layout = new QVBoxLayout(this);
layout->setContentsMargins(22, 0, 0, 12);
layout->setSpacing(4);
for (auto itr = validationPoints.cbegin(); itr != validationPoints.cend(); ++itr) {
RowData data;
data.m_infoLabel = new InfoLabel(itr.value());
data.m_validText = itr.value();
layout->addWidget(data.m_infoLabel);
m_validationData[itr.key()] = data;
setPointValid(itr.key(), false);
}
m_detailsWidget->setWidget(this);
setContentsMargins(0, 0, 0, 0);
}
void SummaryWidget::setPointValid(int key, bool valid, const QString errorText)
{
if (!m_validationData.contains(key))
return;
RowData &data = m_validationData[key];
data.m_valid = valid;
data.m_infoLabel->setType(valid ? InfoLabel::Ok : InfoLabel::NotOk);
data.m_infoLabel->setText(valid || errorText.isEmpty() ? data.m_validText : errorText);
updateUi();
}
bool SummaryWidget::rowsOk(const QList<int> &keys) const
{
for (auto key : keys) {
if (!m_validationData[key].m_valid)
return false;
}
return true;
}
bool SummaryWidget::allRowsOk() const
{
return rowsOk(m_validationData.keys());
}
void SummaryWidget::setInfoText(const QString &text)
{
m_infoText = text;
updateUi();
}
void SummaryWidget::setInProgressText(const QString &text)
{
m_detailsWidget->setIcon({});
m_detailsWidget->setSummaryText(QString("%1...").arg(text));
m_detailsWidget->setState(DetailsWidget::Collapsed);
}
void SummaryWidget::setSetupOk(bool ok)
{
m_detailsWidget->setState(ok ? DetailsWidget::Collapsed : DetailsWidget::Expanded);
}
void SummaryWidget::updateUi()
{
bool ok = allRowsOk();
m_detailsWidget->setIcon(ok ? Icons::OK.icon() : Icons::CRITICAL.icon());
m_detailsWidget->setSummaryText(ok ? QString("%1 %2").arg(m_validText).arg(m_infoText)
: m_invalidText);
}
} // namespace Utils
|