New TaskProgressIndicator widget for the memory inspection pane
This commit is contained in:
@@ -41,6 +41,7 @@ target_sources(
|
|||||||
|
|
||||||
# Task indicator
|
# Task indicator
|
||||||
${CMAKE_CURRENT_SOURCE_DIR}/UserInterfaces/InsightWindow/Widgets/TaskIndicator/TaskIndicator.cpp
|
${CMAKE_CURRENT_SOURCE_DIR}/UserInterfaces/InsightWindow/Widgets/TaskIndicator/TaskIndicator.cpp
|
||||||
|
${CMAKE_CURRENT_SOURCE_DIR}/UserInterfaces/InsightWindow/Widgets/TaskProgressIndicator/TaskProgressIndicator.cpp
|
||||||
|
|
||||||
# Error dialogue window
|
# Error dialogue window
|
||||||
${CMAKE_CURRENT_SOURCE_DIR}/UserInterfaces/InsightWindow/Widgets/ErrorDialogue/ErrorDialogue.cpp
|
${CMAKE_CURRENT_SOURCE_DIR}/UserInterfaces/InsightWindow/Widgets/ErrorDialogue/ErrorDialogue.cpp
|
||||||
|
|||||||
@@ -6,7 +6,6 @@
|
|||||||
#include "src/Insight/UserInterfaces/InsightWindow/Widgets/ErrorDialogue/ErrorDialogue.hpp"
|
#include "src/Insight/UserInterfaces/InsightWindow/Widgets/ErrorDialogue/ErrorDialogue.hpp"
|
||||||
|
|
||||||
#include "src/Insight/InsightWorker/Tasks/RetrieveMemorySnapshots.hpp"
|
#include "src/Insight/InsightWorker/Tasks/RetrieveMemorySnapshots.hpp"
|
||||||
#include "src/Insight/InsightWorker/Tasks/CaptureMemorySnapshot.hpp"
|
|
||||||
#include "src/Insight/InsightWorker/InsightWorker.hpp"
|
#include "src/Insight/InsightWorker/InsightWorker.hpp"
|
||||||
|
|
||||||
#include "src/Services/PathService.hpp"
|
#include "src/Services/PathService.hpp"
|
||||||
@@ -161,6 +160,8 @@ namespace Bloom::Widgets
|
|||||||
}
|
}
|
||||||
);
|
);
|
||||||
|
|
||||||
|
emit this->captureTaskCreated(captureTask);
|
||||||
|
|
||||||
InsightWorker::queueTask(captureTask);
|
InsightWorker::queueTask(captureTask);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -14,6 +14,8 @@
|
|||||||
#include "src/Targets/TargetMemory.hpp"
|
#include "src/Targets/TargetMemory.hpp"
|
||||||
#include "src/Insight/UserInterfaces/InsightWindow/Widgets/TargetMemoryInspectionPane/MemorySnapshot.hpp"
|
#include "src/Insight/UserInterfaces/InsightWindow/Widgets/TargetMemoryInspectionPane/MemorySnapshot.hpp"
|
||||||
|
|
||||||
|
#include "src/Insight/InsightWorker/Tasks/CaptureMemorySnapshot.hpp"
|
||||||
|
|
||||||
#include "./CreateSnapshotWindow/CreateSnapshotWindow.hpp"
|
#include "./CreateSnapshotWindow/CreateSnapshotWindow.hpp"
|
||||||
#include "MemorySnapshotItem.hpp"
|
#include "MemorySnapshotItem.hpp"
|
||||||
|
|
||||||
@@ -35,6 +37,9 @@ namespace Bloom::Widgets
|
|||||||
PanelWidget* parent = nullptr
|
PanelWidget* parent = nullptr
|
||||||
);
|
);
|
||||||
|
|
||||||
|
signals:
|
||||||
|
void captureTaskCreated(const QSharedPointer<CaptureMemorySnapshot>& task);
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
void resizeEvent(QResizeEvent* event) override;
|
void resizeEvent(QResizeEvent* event) override;
|
||||||
void showEvent(QShowEvent* event) override;
|
void showEvent(QShowEvent* event) override;
|
||||||
|
|||||||
@@ -69,16 +69,13 @@ namespace Bloom::Widgets
|
|||||||
this->container->setStyleSheet(stylesheetFile.readAll());
|
this->container->setStyleSheet(stylesheetFile.readAll());
|
||||||
this->container->setSizePolicy(QSizePolicy::MinimumExpanding, QSizePolicy::MinimumExpanding);
|
this->container->setSizePolicy(QSizePolicy::MinimumExpanding, QSizePolicy::MinimumExpanding);
|
||||||
|
|
||||||
|
this->subContainerLayout = this->container->findChild<QHBoxLayout*>("container-sub-layout");
|
||||||
|
|
||||||
this->titleBar = this->container->findChild<QWidget*>("title-bar");
|
this->titleBar = this->container->findChild<QWidget*>("title-bar");
|
||||||
|
|
||||||
this->titleBar->layout()->setContentsMargins(7, 0, 7, 0);
|
this->bottomBar = this->container->findChild<QWidget*>("bottom-bar");
|
||||||
auto* titleLabel = this->titleBar->findChild<Label*>("title");
|
this->bottomBarLayout = this->bottomBar->findChild<QHBoxLayout*>();
|
||||||
titleLabel->setText(memoryName);
|
|
||||||
|
|
||||||
// Quick sanity check to ensure the validity of persisted settings.
|
|
||||||
this->sanitiseSettings();
|
|
||||||
|
|
||||||
this->subContainerLayout = this->container->findChild<QHBoxLayout*>("container-sub-layout");
|
|
||||||
this->manageMemoryRegionsButton = this->container->findChild<SvgToolButton*>("manage-memory-regions-btn");
|
this->manageMemoryRegionsButton = this->container->findChild<SvgToolButton*>("manage-memory-regions-btn");
|
||||||
this->manageMemorySnapshotsButton = this->container->findChild<QToolButton*>("manage-memory-snapshots-btn");
|
this->manageMemorySnapshotsButton = this->container->findChild<QToolButton*>("manage-memory-snapshots-btn");
|
||||||
|
|
||||||
@@ -91,10 +88,17 @@ namespace Bloom::Widgets
|
|||||||
|
|
||||||
this->manageMemorySnapshotsButton->layout()->setContentsMargins(0, 0, 0, 0);
|
this->manageMemorySnapshotsButton->layout()->setContentsMargins(0, 0, 0, 0);
|
||||||
|
|
||||||
|
this->staleDataLabelContainer = this->container->findChild<QWidget*>("stale-data-label");
|
||||||
|
|
||||||
|
this->titleBar->layout()->setContentsMargins(7, 0, 7, 0);
|
||||||
|
auto* titleLabel = this->titleBar->findChild<Label*>("title");
|
||||||
|
titleLabel->setText(memoryName);
|
||||||
|
|
||||||
auto* memoryCapacityLabel = this->container->findChild<Label*>("memory-capacity-label");
|
auto* memoryCapacityLabel = this->container->findChild<Label*>("memory-capacity-label");
|
||||||
memoryCapacityLabel->setText(QLocale(QLocale::English).toString(this->targetMemoryDescriptor.size()) + " Bytes");
|
memoryCapacityLabel->setText(QLocale(QLocale::English).toString(this->targetMemoryDescriptor.size()) + " Bytes");
|
||||||
|
|
||||||
this->staleDataLabelContainer = this->container->findChild<QWidget*>("stale-data-label");
|
// Quick sanity check to ensure the validity of persisted settings.
|
||||||
|
this->sanitiseSettings();
|
||||||
|
|
||||||
this->hexViewerWidget = new HexViewerWidget(
|
this->hexViewerWidget = new HexViewerWidget(
|
||||||
this->targetMemoryDescriptor,
|
this->targetMemoryDescriptor,
|
||||||
@@ -128,6 +132,9 @@ namespace Bloom::Widgets
|
|||||||
this->setRefreshOnTargetStopEnabled(this->settings.refreshOnTargetStop);
|
this->setRefreshOnTargetStopEnabled(this->settings.refreshOnTargetStop);
|
||||||
this->setRefreshOnActivationEnabled(this->settings.refreshOnActivation);
|
this->setRefreshOnActivationEnabled(this->settings.refreshOnActivation);
|
||||||
|
|
||||||
|
this->bottomBarHorizontalSpacer = new QSpacerItem(1, 1, QSizePolicy::Expanding, QSizePolicy::Expanding);
|
||||||
|
this->bottomBarLayout->insertItem(5, this->bottomBarHorizontalSpacer);
|
||||||
|
|
||||||
QObject::connect(
|
QObject::connect(
|
||||||
this,
|
this,
|
||||||
&PaneWidget::paneActivated,
|
&PaneWidget::paneActivated,
|
||||||
@@ -188,6 +195,13 @@ namespace Bloom::Widgets
|
|||||||
}
|
}
|
||||||
);
|
);
|
||||||
|
|
||||||
|
QObject::connect(
|
||||||
|
this->snapshotManager,
|
||||||
|
&SnapshotManager::captureTaskCreated,
|
||||||
|
this,
|
||||||
|
&TargetMemoryInspectionPane::onCaptureMemoryTaskCreated
|
||||||
|
);
|
||||||
|
|
||||||
QObject::connect(
|
QObject::connect(
|
||||||
this->refreshButton,
|
this->refreshButton,
|
||||||
&QToolButton::clicked,
|
&QToolButton::clicked,
|
||||||
@@ -397,6 +411,7 @@ namespace Bloom::Widgets
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
this->setTaskProgressIndicator(readMemoryTask);
|
||||||
InsightWorker::queueTask(readMemoryTask);
|
InsightWorker::queueTask(readMemoryTask);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -612,6 +627,36 @@ namespace Bloom::Widgets
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void TargetMemoryInspectionPane::onCaptureMemoryTaskCreated(const QSharedPointer<CaptureMemorySnapshot>& task) {
|
||||||
|
this->setTaskProgressIndicator(task);
|
||||||
|
}
|
||||||
|
|
||||||
|
void TargetMemoryInspectionPane::setTaskProgressIndicator(const QSharedPointer<InsightWorkerTask>& task) {
|
||||||
|
if (this->taskProgressIndicator != nullptr) {
|
||||||
|
this->bottomBarLayout->removeWidget(this->taskProgressIndicator);
|
||||||
|
this->taskProgressIndicator->deleteLater();
|
||||||
|
this->taskProgressIndicator = nullptr;
|
||||||
|
}
|
||||||
|
|
||||||
|
this->taskProgressIndicator = new TaskProgressIndicator(task, this);
|
||||||
|
|
||||||
|
QObject::connect(
|
||||||
|
this->taskProgressIndicator,
|
||||||
|
&TaskProgressIndicator::taskComplete,
|
||||||
|
this,
|
||||||
|
[this] {
|
||||||
|
this->bottomBarLayout->removeWidget(this->taskProgressIndicator);
|
||||||
|
this->taskProgressIndicator->deleteLater();
|
||||||
|
this->taskProgressIndicator = nullptr;
|
||||||
|
|
||||||
|
this->bottomBarLayout->insertItem(5, this->bottomBarHorizontalSpacer);
|
||||||
|
}
|
||||||
|
);
|
||||||
|
|
||||||
|
this->bottomBarLayout->removeItem(this->bottomBarHorizontalSpacer);
|
||||||
|
this->bottomBarLayout->insertWidget(5, this->taskProgressIndicator);
|
||||||
|
}
|
||||||
|
|
||||||
void TargetMemoryInspectionPane::setStaleData(bool staleData) {
|
void TargetMemoryInspectionPane::setStaleData(bool staleData) {
|
||||||
this->staleData = staleData;
|
this->staleData = staleData;
|
||||||
this->staleDataLabelContainer->setVisible(this->staleData);
|
this->staleDataLabelContainer->setVisible(this->staleData);
|
||||||
|
|||||||
@@ -6,6 +6,7 @@
|
|||||||
#include <QResizeEvent>
|
#include <QResizeEvent>
|
||||||
#include <QHBoxLayout>
|
#include <QHBoxLayout>
|
||||||
#include <QToolButton>
|
#include <QToolButton>
|
||||||
|
#include <QSpacerItem>
|
||||||
#include <QKeyEvent>
|
#include <QKeyEvent>
|
||||||
|
|
||||||
#include "src/Insight/UserInterfaces/InsightWindow/Widgets/PaneWidget.hpp"
|
#include "src/Insight/UserInterfaces/InsightWindow/Widgets/PaneWidget.hpp"
|
||||||
@@ -16,6 +17,9 @@
|
|||||||
#include "src/Insight/UserInterfaces/InsightWindow/Widgets/PanelWidget.hpp"
|
#include "src/Insight/UserInterfaces/InsightWindow/Widgets/PanelWidget.hpp"
|
||||||
#include "src/Insight/UserInterfaces/InsightWindow/Widgets/SvgToolButton.hpp"
|
#include "src/Insight/UserInterfaces/InsightWindow/Widgets/SvgToolButton.hpp"
|
||||||
#include "src/Insight/UserInterfaces/InsightWindow/Widgets/Label.hpp"
|
#include "src/Insight/UserInterfaces/InsightWindow/Widgets/Label.hpp"
|
||||||
|
#include "src/Insight/UserInterfaces/InsightWindow/Widgets/TaskProgressIndicator/TaskProgressIndicator.hpp"
|
||||||
|
|
||||||
|
#include "src/Insight/InsightWorker/Tasks/CaptureMemorySnapshot.hpp"
|
||||||
|
|
||||||
#include "HexViewerWidget/HexViewerWidget.hpp"
|
#include "HexViewerWidget/HexViewerWidget.hpp"
|
||||||
#include "MemoryRegionManager/MemoryRegionManagerWindow.hpp"
|
#include "MemoryRegionManager/MemoryRegionManagerWindow.hpp"
|
||||||
@@ -59,6 +63,9 @@ namespace Bloom::Widgets
|
|||||||
QHBoxLayout* subContainerLayout = nullptr;
|
QHBoxLayout* subContainerLayout = nullptr;
|
||||||
|
|
||||||
QWidget* titleBar = nullptr;
|
QWidget* titleBar = nullptr;
|
||||||
|
QWidget* bottomBar = nullptr;
|
||||||
|
QHBoxLayout* bottomBarLayout = nullptr;
|
||||||
|
|
||||||
SvgToolButton* manageMemoryRegionsButton = nullptr;
|
SvgToolButton* manageMemoryRegionsButton = nullptr;
|
||||||
QToolButton* manageMemorySnapshotsButton = nullptr;
|
QToolButton* manageMemorySnapshotsButton = nullptr;
|
||||||
|
|
||||||
@@ -73,6 +80,8 @@ namespace Bloom::Widgets
|
|||||||
PanelWidget* rightPanel = nullptr;
|
PanelWidget* rightPanel = nullptr;
|
||||||
SnapshotManager* snapshotManager = nullptr;
|
SnapshotManager* snapshotManager = nullptr;
|
||||||
|
|
||||||
|
TaskProgressIndicator* taskProgressIndicator = nullptr;
|
||||||
|
QSpacerItem* bottomBarHorizontalSpacer = nullptr;
|
||||||
QWidget* staleDataLabelContainer = nullptr;
|
QWidget* staleDataLabelContainer = nullptr;
|
||||||
|
|
||||||
Targets::TargetState targetState = Targets::TargetState::UNKNOWN;
|
Targets::TargetState targetState = Targets::TargetState::UNKNOWN;
|
||||||
@@ -96,6 +105,8 @@ namespace Bloom::Widgets
|
|||||||
Bloom::Targets::TargetMemoryType memoryType,
|
Bloom::Targets::TargetMemoryType memoryType,
|
||||||
Targets::TargetMemoryAddressRange addressRange
|
Targets::TargetMemoryAddressRange addressRange
|
||||||
);
|
);
|
||||||
|
void onCaptureMemoryTaskCreated(const QSharedPointer<CaptureMemorySnapshot>& task);
|
||||||
|
void setTaskProgressIndicator(const QSharedPointer<InsightWorkerTask>& task);
|
||||||
void setStaleData(bool staleData);
|
void setStaleData(bool staleData);
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -366,6 +366,9 @@
|
|||||||
<property name="toolTip">
|
<property name="toolTip">
|
||||||
<string>Memory Capacity</string>
|
<string>Memory Capacity</string>
|
||||||
</property>
|
</property>
|
||||||
|
<property name="sizePolicy">
|
||||||
|
<sizepolicy hsizetype="Fixed" vsizetype="Fixed"/>
|
||||||
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
<item>
|
<item>
|
||||||
@@ -385,8 +388,25 @@
|
|||||||
</item>
|
</item>
|
||||||
<item>
|
<item>
|
||||||
<spacer name="horizontal-spacer">
|
<spacer name="horizontal-spacer">
|
||||||
<property name="orientation">
|
<property name="sizeHint">
|
||||||
<enum>Qt::Horizontal</enum>
|
<size>
|
||||||
|
<width>5</width>
|
||||||
|
</size>
|
||||||
|
</property>
|
||||||
|
<property name="sizeType">
|
||||||
|
<enum>QSizePolicy::Fixed</enum>
|
||||||
|
</property>
|
||||||
|
</spacer>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<spacer name="horizontal-spacer">
|
||||||
|
<property name="sizeHint">
|
||||||
|
<size>
|
||||||
|
<width>15</width>
|
||||||
|
</size>
|
||||||
|
</property>
|
||||||
|
<property name="sizeType">
|
||||||
|
<enum>QSizePolicy::Fixed</enum>
|
||||||
</property>
|
</property>
|
||||||
</spacer>
|
</spacer>
|
||||||
</item>
|
</item>
|
||||||
@@ -395,6 +415,9 @@
|
|||||||
<property name="visible">
|
<property name="visible">
|
||||||
<bool>false</bool>
|
<bool>false</bool>
|
||||||
</property>
|
</property>
|
||||||
|
<property name="sizePolicy">
|
||||||
|
<sizepolicy hsizetype="Fixed" vsizetype="Fixed"/>
|
||||||
|
</property>
|
||||||
<layout class="QHBoxLayout">
|
<layout class="QHBoxLayout">
|
||||||
<property name="spacing">
|
<property name="spacing">
|
||||||
<number>1</number>
|
<number>1</number>
|
||||||
|
|||||||
@@ -0,0 +1,111 @@
|
|||||||
|
#include "TaskProgressIndicator.hpp"
|
||||||
|
|
||||||
|
#include <QPainter>
|
||||||
|
#include <QColor>
|
||||||
|
#include <algorithm>
|
||||||
|
#include <QTimer>
|
||||||
|
|
||||||
|
namespace Bloom::Widgets
|
||||||
|
{
|
||||||
|
TaskProgressIndicator::TaskProgressIndicator(
|
||||||
|
const QSharedPointer<InsightWorkerTask>& task,
|
||||||
|
QWidget* parent
|
||||||
|
)
|
||||||
|
: QWidget(parent)
|
||||||
|
, task(task)
|
||||||
|
{
|
||||||
|
this->setObjectName("task-progress-indicator");
|
||||||
|
this->setFixedHeight(26);
|
||||||
|
this->setSizePolicy(QSizePolicy::MinimumExpanding, QSizePolicy::Fixed);
|
||||||
|
|
||||||
|
QObject::connect(
|
||||||
|
this->task.get(),
|
||||||
|
&InsightWorkerTask::progressUpdate,
|
||||||
|
this,
|
||||||
|
&TaskProgressIndicator::onTaskProgressUpdate
|
||||||
|
);
|
||||||
|
|
||||||
|
QObject::connect(
|
||||||
|
this->task.get(),
|
||||||
|
&InsightWorkerTask::failed,
|
||||||
|
this,
|
||||||
|
&TaskProgressIndicator::onTaskFailed
|
||||||
|
);
|
||||||
|
|
||||||
|
QObject::connect(
|
||||||
|
this->task.get(),
|
||||||
|
&InsightWorkerTask::finished,
|
||||||
|
this,
|
||||||
|
&TaskProgressIndicator::onTaskFinished
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
void TaskProgressIndicator::paintEvent(QPaintEvent* event) {
|
||||||
|
auto painter = QPainter(this);
|
||||||
|
|
||||||
|
const auto size = this->size();
|
||||||
|
|
||||||
|
static constexpr auto backgroundBarColor = QColor(0x8E, 0x8B, 0x83, 40);
|
||||||
|
static constexpr auto barColor = QColor(0x8E, 0x8B, 0x83, 90);
|
||||||
|
static constexpr auto fontColor = QColor(0x99, 0x9a, 0x9d);
|
||||||
|
|
||||||
|
static auto font = QFont("'Ubuntu', sans-serif", 9);
|
||||||
|
painter.setFont(font);
|
||||||
|
painter.setPen(fontColor);
|
||||||
|
|
||||||
|
static constexpr auto barHeight = 3;
|
||||||
|
const auto barYPosition = size.height() - barHeight - 3;
|
||||||
|
|
||||||
|
const auto percentage = std::max(this->taskProgressPercentage, 2);
|
||||||
|
|
||||||
|
painter.drawText(
|
||||||
|
0,
|
||||||
|
barYPosition - 5,
|
||||||
|
this->task->brief() + QString(this->taskFailed ? " - Failed" : (percentage == 100 ? " - Completed" : ""))
|
||||||
|
);
|
||||||
|
|
||||||
|
painter.setPen(Qt::PenStyle::NoPen);
|
||||||
|
painter.setBrush(backgroundBarColor);
|
||||||
|
|
||||||
|
painter.drawRect(
|
||||||
|
0,
|
||||||
|
barYPosition,
|
||||||
|
size.width(),
|
||||||
|
barHeight
|
||||||
|
);
|
||||||
|
|
||||||
|
painter.setBrush(barColor);
|
||||||
|
|
||||||
|
painter.drawRect(
|
||||||
|
0,
|
||||||
|
barYPosition,
|
||||||
|
static_cast<int>(static_cast<float>(size.width()) * (static_cast<float>(percentage) / 100)),
|
||||||
|
barHeight
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
void TaskProgressIndicator::onTaskProgressUpdate(int taskProgressPercentage) {
|
||||||
|
this->taskProgressPercentage = taskProgressPercentage;
|
||||||
|
this->update();
|
||||||
|
}
|
||||||
|
|
||||||
|
void TaskProgressIndicator::onTaskFailed() {
|
||||||
|
this->taskFailed = true;
|
||||||
|
this->update();
|
||||||
|
}
|
||||||
|
|
||||||
|
void TaskProgressIndicator::onTaskFinished() {
|
||||||
|
this->taskProgressPercentage = 100;
|
||||||
|
this->update();
|
||||||
|
|
||||||
|
auto* finishedSignalTimer = new QTimer();
|
||||||
|
finishedSignalTimer->setSingleShot(true);
|
||||||
|
finishedSignalTimer->setInterval(2500);
|
||||||
|
|
||||||
|
QObject::connect(finishedSignalTimer, &QTimer::timeout, this, [this] {
|
||||||
|
emit this->taskComplete();
|
||||||
|
});
|
||||||
|
|
||||||
|
finishedSignalTimer->start();
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,35 @@
|
|||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include <QWidget>
|
||||||
|
#include <QSharedPointer>
|
||||||
|
#include <cstdint>
|
||||||
|
#include <unordered_map>
|
||||||
|
#include <QEvent>
|
||||||
|
|
||||||
|
#include "src/Insight/InsightWorker/Tasks/InsightWorkerTask.hpp"
|
||||||
|
|
||||||
|
namespace Bloom::Widgets
|
||||||
|
{
|
||||||
|
class TaskProgressIndicator: public QWidget
|
||||||
|
{
|
||||||
|
Q_OBJECT
|
||||||
|
|
||||||
|
public:
|
||||||
|
TaskProgressIndicator(const QSharedPointer<InsightWorkerTask>& task, QWidget* parent);
|
||||||
|
|
||||||
|
signals:
|
||||||
|
void taskComplete();
|
||||||
|
|
||||||
|
protected:
|
||||||
|
void paintEvent(QPaintEvent* event) override;
|
||||||
|
|
||||||
|
private:
|
||||||
|
QSharedPointer<InsightWorkerTask> task;
|
||||||
|
int taskProgressPercentage = 0;
|
||||||
|
bool taskFailed = false;
|
||||||
|
|
||||||
|
void onTaskProgressUpdate(int progressPercentage);
|
||||||
|
void onTaskFailed();
|
||||||
|
void onTaskFinished();
|
||||||
|
};
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user