forked from danmar/cppcheck
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy paththreaddetails.cpp
More file actions
54 lines (47 loc) · 1.7 KB
/
threaddetails.cpp
File metadata and controls
54 lines (47 loc) · 1.7 KB
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
#include "threaddetails.h"
#include "ui_threaddetails.h"
#include <QMutexLocker>
ThreadDetails* ThreadDetails::mInstance;
ThreadDetails::ThreadDetails(QWidget *parent)
: QWidget(parent)
, mUi(new Ui::ThreadDetails)
{
mInstance = this;
setWindowFlags(Qt::Window);
mUi->setupUi(this);
connect(&mTimer, &QTimer::timeout, this, &ThreadDetails::updateUI);
mTimer.start(1000);
}
ThreadDetails::~ThreadDetails()
{
mInstance = nullptr;
delete mUi;
}
// NOLINTNEXTLINE(performance-unnecessary-value-param) - false positive
void ThreadDetails::threadDetailsUpdated(QMap<int, CheckThread::Details> threadDetails)
{
QMutexLocker locker(&mMutex);
mThreadDetails = threadDetails;
if (threadDetails.empty()) {
mProgress.clear();
}
}
// cppcheck-suppress passedByValue
// NOLINTNEXTLINE(performance-unnecessary-value-param) - false positive
void ThreadDetails::progress(QString filename, QString stage, std::size_t value) {
QMutexLocker locker(&mMutex);
mProgress[filename] = {QString(), stage + QString(value > 0 ? ": %1%" : "").arg(value)};
}
void ThreadDetails::updateUI() {
QString text("Thread\tStart time\tFile/Progress\n");
{
QMutexLocker locker(&mMutex);
for (const auto& td: mThreadDetails) {
auto& timeProgress = mProgress[td.file];
if (timeProgress.first.isEmpty() && !timeProgress.second.isEmpty())
timeProgress.first = QTime::currentTime().toString(Qt::TextDate);
text += QString("%1\t%2\t%3\n\t%4\t%5\n").arg(td.threadIndex).arg(td.startTime.toString(Qt::TextDate)).arg(td.file).arg(timeProgress.first).arg(timeProgress.second);
}
}
mUi->plainTextEdit->setPlainText(text);
}