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
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
#include "overview_table_row.hpp"
#include <algorithm>
#include <memory>
#include <QTableWidgetItem>
#include <QImage>
#include "../qtutil/util.hpp"
#include "../stfl/stringutils.hpp"
namespace cvv
{
namespace gui
{
OverviewTableRow::OverviewTableRow(util::Reference<const impl::Call> call)
: call_{ call }
{
id_ = call_->getId();
idStr = QString::number(call_->getId());
for (size_t i = 0; i < 2 && i < call->matrixCount(); i++)
{
QPixmap img;
std::tie(std::ignore, img) =
qtutil::convertMatToQPixmap(call->matrixAt(i));
imgs.push_back(std::move(img));
}
description_ = QString(call_->description());
if (call_->metaData().isKnown)
{
const auto &data = call_->metaData();
line_ = data.line;
lineStr = QString::number(data.line);
fileStr = data.file;
functionStr = data.function;
}
typeStr = QString(call_->type());
}
void OverviewTableRow::addToTable(QTableWidget *table, size_t row,
bool showImages, size_t maxImages,
int imgHeight, int imgWidth)
{
std::vector<std::unique_ptr<QTableWidgetItem>> items{};
items.push_back(util::make_unique<QTableWidgetItem>(idStr));
if (showImages)
{
for (size_t i = 0; i < imgs.size() && i < maxImages; i++)
{
auto imgWidget = util::make_unique<QTableWidgetItem>("");
imgWidget->setData(
Qt::DecorationRole,
imgs.at(i).scaled(imgHeight, imgWidth,
Qt::KeepAspectRatio,
Qt::SmoothTransformation));
imgWidget->setTextAlignment(Qt::AlignHCenter);
items.push_back(std::move(imgWidget));
}
}
size_t emptyImagesToAdd =
showImages ? maxImages - std::min(maxImages, imgs.size())
: maxImages;
for (size_t i = 0; i < emptyImagesToAdd; i++)
{
items.push_back(util::make_unique<QTableWidgetItem>(""));
}
items.push_back(util::make_unique<QTableWidgetItem>(description_));
items.push_back(util::make_unique<QTableWidgetItem>(functionStr, 30));
items.push_back(util::make_unique<QTableWidgetItem>(fileStr));
items.push_back(util::make_unique<QTableWidgetItem>(lineStr));
items.push_back(util::make_unique<QTableWidgetItem>(typeStr));
for (size_t i = 0; i < items.size(); i++)
{
items[i]->setFlags(items[i]->flags() ^ Qt::ItemIsEditable);
table->setItem(row, i, items[i].release());
}
}
void OverviewTableRow::resizeInTable(QTableWidget *table, size_t row,
bool showImages, size_t maxImages,
int imgHeight, int imgWidth)
{
if (showImages)
{
for (size_t i = 0; i < imgs.size() && i < maxImages; i++)
{
auto imgWidget = util::make_unique<QTableWidgetItem>("");
imgWidget->setData(
Qt::DecorationRole,
imgs.at(i).scaled(imgHeight, imgWidth,
Qt::KeepAspectRatio,
Qt::SmoothTransformation));
imgWidget->setTextAlignment(Qt::AlignHCenter);
imgWidget->setFlags(imgWidget->flags() ^ Qt::ItemIsEditable);
table->setItem(row, i + 1, imgWidget.release());
}
}
}
}
}