添加后台任务显示视图
This commit is contained in:
parent
b3b67e350c
commit
8c96ce6101
|
|
@ -22,41 +22,12 @@
|
|||
#include "DataCalcProcess/NolinearLeastSquaresCurveFit.h"
|
||||
#include "EnergyScaleDataModel.h"
|
||||
#include "DataCalcProcess/CoincidenceSpectrumProcess.h"
|
||||
#include "BackgroundTaskListModel.h"
|
||||
#include <QDebug>
|
||||
|
||||
using namespace DataProcessWorkPool;
|
||||
using namespace io;
|
||||
|
||||
DataProcessTaskList* DataProcessTaskList::_s_instance = nullptr;
|
||||
|
||||
DataProcessTaskList *DataProcessTaskList::Instance()
|
||||
{
|
||||
if (!_s_instance) {
|
||||
_s_instance = new DataProcessTaskList();
|
||||
}
|
||||
return _s_instance;
|
||||
}
|
||||
|
||||
DataProcessTaskList::~DataProcessTaskList()
|
||||
{
|
||||
Clear();
|
||||
}
|
||||
|
||||
void DataProcessTaskList::InserTask(DataProcessTask* task)
|
||||
{
|
||||
_task_list.insert(task->GetTaskName(), task);
|
||||
}
|
||||
|
||||
void DataProcessTaskList::RemoveTask(const QString &task_name)
|
||||
{
|
||||
_task_list.remove(task_name);
|
||||
}
|
||||
|
||||
void DataProcessTaskList::Clear()
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
|
||||
void DataProcessTask::SetFinishedNotifier(QObject* finished_notifier, const char* finished_process, const QString& project_name)
|
||||
{
|
||||
|
|
@ -96,11 +67,11 @@ void DataProcessTask::run()
|
|||
return;
|
||||
}
|
||||
|
||||
DataProcessTaskList::Instance()->InserTask(this);
|
||||
BackgroundTaskListModel::Instance()->InserTask(this);
|
||||
|
||||
bool task_ok = processTask();
|
||||
|
||||
DataProcessTaskList::Instance()->RemoveTask(this->GetTaskName());
|
||||
BackgroundTaskListModel::Instance()->RemoveTask(this->GetTaskName());
|
||||
|
||||
if ((GetFinishedNotifier() != nullptr) && (GetFinishedNotifierProcess() != nullptr)) {
|
||||
QMetaObject::invokeMethod(
|
||||
|
|
@ -139,7 +110,7 @@ bool ParticleDataTask::processTask()
|
|||
return processEveryChannelParticleData();
|
||||
}
|
||||
|
||||
const QString &EveryChannelParticleCountDataTask::GetTaskName()
|
||||
QString EveryChannelParticleCountDataTask::GetTaskName()
|
||||
{
|
||||
return QStringLiteral(u"[%1]通道粒子计数统计处理").arg(this->GetProjectName());
|
||||
}
|
||||
|
|
@ -267,7 +238,7 @@ bool EveryChannelParticleCountDataTask::processEveryChannelParticleData()
|
|||
|
||||
////////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
const QString &ParticleDataSortTask::GetTaskName()
|
||||
QString ParticleDataSortTask::GetTaskName()
|
||||
{
|
||||
return QStringLiteral(u"[%1]粒子数据按时间排序处理").arg(this->GetProjectName());
|
||||
}
|
||||
|
|
@ -501,7 +472,7 @@ bool ParticleDataSortByMinimysTask::processEveryChannelParticleData()
|
|||
return ret_ok;
|
||||
}
|
||||
|
||||
const QString &CoincidenceEventAnalysisTask::GetTaskName()
|
||||
QString CoincidenceEventAnalysisTask::GetTaskName()
|
||||
{
|
||||
return QStringLiteral(u"[%1]粒子数据符合处理").arg(this->GetProjectName());
|
||||
}
|
||||
|
|
@ -584,7 +555,7 @@ bool CoincidenceEventAnalysisTask::processTask()
|
|||
return true;
|
||||
}
|
||||
|
||||
const QString &AutoFindPeaksTask::GetTaskName()
|
||||
QString AutoFindPeaksTask::GetTaskName()
|
||||
{
|
||||
return QStringLiteral(u"[%1]粒子通道计数谱自动寻峰处理").arg(this->GetProjectName());
|
||||
}
|
||||
|
|
@ -687,7 +658,7 @@ bool AutoFindPeaksTask::processTask()
|
|||
return true;
|
||||
}
|
||||
|
||||
const QString &ChannelEnergyScaleFittingTask::GetTaskName()
|
||||
QString ChannelEnergyScaleFittingTask::GetTaskName()
|
||||
{
|
||||
return QStringLiteral(u"[%1]能量刻度拟合处理").arg(this->GetProjectName());
|
||||
}
|
||||
|
|
@ -778,7 +749,7 @@ bool ChannelEnergyScaleFittingTask::processTask()
|
|||
return true;
|
||||
}
|
||||
|
||||
const QString &EnergyScaleParticleDataTask::GetTaskName()
|
||||
QString EnergyScaleParticleDataTask::GetTaskName()
|
||||
{
|
||||
return QStringLiteral(u"[%1]粒子数据能量刻度处理").arg(this->GetProjectName());
|
||||
}
|
||||
|
|
@ -845,7 +816,7 @@ bool EnergyScaleParticleDataTask::processTask()
|
|||
return true;
|
||||
}
|
||||
|
||||
const QString &EnergyCountProcessTask::GetTaskName()
|
||||
QString EnergyCountProcessTask::GetTaskName()
|
||||
{
|
||||
return QStringLiteral(u"[%1]粒子能量计数统计处理").arg(this->GetProjectName());
|
||||
}
|
||||
|
|
@ -930,7 +901,7 @@ bool EnergyCountProcessTask::processTask()
|
|||
return true;
|
||||
}
|
||||
|
||||
const QString &EnergyScaleCoincidenceDataTask::GetTaskName()
|
||||
QString EnergyScaleCoincidenceDataTask::GetTaskName()
|
||||
{
|
||||
return QStringLiteral(u"[%1]粒子符合数据能量刻度处理").arg(this->GetProjectName());
|
||||
}
|
||||
|
|
@ -1022,7 +993,7 @@ bool EnergyScaleCoincidenceDataTask::processTask()
|
|||
return true;
|
||||
}
|
||||
|
||||
const QString &EnergyScaleaAntiCoincidenceDataTask::GetTaskName()
|
||||
QString EnergyScaleaAntiCoincidenceDataTask::GetTaskName()
|
||||
{
|
||||
return QStringLiteral(u"[%1]粒子反符合数据能量刻度处理").arg(this->GetProjectName());
|
||||
}
|
||||
|
|
|
|||
|
|
@ -16,7 +16,7 @@ namespace DataProcessWorkPool
|
|||
class DataProcessTask : public QRunnable
|
||||
{
|
||||
public:
|
||||
virtual const QString& GetTaskName() = 0;
|
||||
virtual QString GetTaskName() = 0;
|
||||
|
||||
void SetFinishedNotifier(QObject* finished_notifier, const char* finished_process, const QString& project_name);
|
||||
const QString& GetProjectName() const;
|
||||
|
|
@ -41,24 +41,6 @@ namespace DataProcessWorkPool
|
|||
QVariant _task_result_data;
|
||||
};
|
||||
|
||||
class DataProcessTaskList
|
||||
{
|
||||
public:
|
||||
static DataProcessTaskList* Instance();
|
||||
virtual ~DataProcessTaskList();
|
||||
void InserTask(DataProcessTask *task);
|
||||
void RemoveTask(const QString& task_name);
|
||||
void Clear();
|
||||
signals:
|
||||
void taskInserted();
|
||||
void taskRemoved(const QString& task_name);
|
||||
private:
|
||||
explicit DataProcessTaskList() {}
|
||||
static DataProcessTaskList* _s_instance;
|
||||
private:
|
||||
QMap<QString, DataProcessTask*> _task_list;
|
||||
};
|
||||
|
||||
class ParticleDataTask : public DataProcessTask
|
||||
{
|
||||
public:
|
||||
|
|
@ -78,7 +60,7 @@ namespace DataProcessWorkPool
|
|||
class EveryChannelParticleCountDataTask : public ParticleDataTask
|
||||
{
|
||||
public:
|
||||
const QString& GetTaskName();
|
||||
QString GetTaskName();
|
||||
void SetAllChannelCountResultDir(const QString& dir_path);
|
||||
const QString& GetAllChannelCountResultDir() const;
|
||||
void SetEveryChannelCountResultDir(const QString&dir_path);
|
||||
|
|
@ -95,7 +77,7 @@ namespace DataProcessWorkPool
|
|||
class ParticleDataSortTask : public ParticleDataTask
|
||||
{
|
||||
public:
|
||||
const QString& GetTaskName();
|
||||
QString GetTaskName();
|
||||
void SetSortedResultDir(const QString& sorted_result_dir);
|
||||
const QString& GetSortedResultDir() const;
|
||||
|
||||
|
|
@ -114,7 +96,7 @@ namespace DataProcessWorkPool
|
|||
class CoincidenceEventAnalysisTask : public DataProcessTask
|
||||
{
|
||||
public:
|
||||
const QString& GetTaskName();
|
||||
QString GetTaskName();
|
||||
private:
|
||||
virtual bool processTask() override;
|
||||
};
|
||||
|
|
@ -122,7 +104,7 @@ namespace DataProcessWorkPool
|
|||
class AutoFindPeaksTask : public DataProcessTask
|
||||
{
|
||||
public:
|
||||
const QString& GetTaskName();
|
||||
QString GetTaskName();
|
||||
void SetAnalysisType(AnalysisType analysis_type);
|
||||
void SetDataFileList(const QMap<QString, QVariant>& data_files_set);
|
||||
void SetResultDir(const QString& result_dir);
|
||||
|
|
@ -142,7 +124,7 @@ namespace DataProcessWorkPool
|
|||
public:
|
||||
typedef QMap<QString, QMap<int, QList<double> > > FitDataMap;
|
||||
public:
|
||||
const QString& GetTaskName();
|
||||
QString GetTaskName();
|
||||
void SetData(const FitDataMap& channel_energy_scale_fit_data_map, const QMap<QString, int>& fit_degree_map);
|
||||
void SetResultDir(const QString& result_dir);
|
||||
virtual bool IsValidSetWorkParameters() const override;
|
||||
|
|
@ -157,7 +139,7 @@ namespace DataProcessWorkPool
|
|||
class EnergyScaleParticleDataTask : public DataProcessTask
|
||||
{
|
||||
public:
|
||||
const QString& GetTaskName();
|
||||
QString GetTaskName();
|
||||
private:
|
||||
virtual bool processTask() override;
|
||||
};
|
||||
|
|
@ -165,7 +147,7 @@ namespace DataProcessWorkPool
|
|||
class EnergyCountProcessTask : public DataProcessTask
|
||||
{
|
||||
public:
|
||||
const QString& GetTaskName();
|
||||
QString GetTaskName();
|
||||
private:
|
||||
virtual bool processTask() override;
|
||||
};
|
||||
|
|
@ -173,7 +155,7 @@ namespace DataProcessWorkPool
|
|||
class EnergyScaleCoincidenceDataTask : public DataProcessTask
|
||||
{
|
||||
public:
|
||||
const QString& GetTaskName();
|
||||
QString GetTaskName();
|
||||
private:
|
||||
virtual bool processTask() override;
|
||||
};
|
||||
|
|
@ -181,7 +163,7 @@ namespace DataProcessWorkPool
|
|||
class EnergyScaleaAntiCoincidenceDataTask : public DataProcessTask
|
||||
{
|
||||
public:
|
||||
const QString& GetTaskName();
|
||||
QString GetTaskName();
|
||||
private:
|
||||
virtual bool processTask() override;
|
||||
};
|
||||
|
|
|
|||
|
|
@ -27,7 +27,7 @@
|
|||
#include "GlobalDefine.h"
|
||||
#include "DeviceParamsManagerDlg.h"
|
||||
#include "NuclideLib.h"
|
||||
#include <QListWidget>
|
||||
#include "BackgroundTaskListView.h"
|
||||
#include <QDesktopWidget>
|
||||
|
||||
using namespace ads;
|
||||
|
|
@ -307,16 +307,22 @@ void MainWindow::initAction()
|
|||
|
||||
void MainWindow::initStatusBar()
|
||||
{
|
||||
_w_watcher_list = new QListWidget(this);
|
||||
_w_watcher_list->setWindowFlags(Qt::ToolTip | Qt::FramelessWindowHint | Qt::WindowStaysOnTopHint);
|
||||
QPalette palette = _w_watcher_list->palette();
|
||||
_w_watcher_task_list = new BackgroundTaskListView(this);
|
||||
_w_watcher_task_list->setWindowFlags(Qt::ToolTip | Qt::FramelessWindowHint | Qt::WindowStaysOnTopHint);
|
||||
QPalette palette = _w_watcher_task_list->palette();
|
||||
palette.setColor(QPalette::Base, Qt::gray);
|
||||
_w_watcher_list->setPalette(palette);
|
||||
_w_watcher_list->setAutoFillBackground(true);
|
||||
_w_watcher_task_list->setPalette(palette);
|
||||
_w_watcher_task_list->setAutoFillBackground(true);
|
||||
|
||||
_btn_task_watcher = new QPushButton(QStringLiteral(u"后台任务监视"), _status_bar);
|
||||
_status_bar->addPermanentWidget(_btn_task_watcher);
|
||||
connect(_btn_task_watcher, &QPushButton::clicked, this, &MainWindow::onShowBackgroundTaskList);
|
||||
connect(_btn_task_watcher, &QPushButton::clicked, this, [this](){
|
||||
if ( _w_watcher_task_list->isVisible() ) {
|
||||
_w_watcher_task_list->hide();
|
||||
} else {
|
||||
this->onShowBackgroundTaskList();
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
void MainWindow::applyStyleSheet()
|
||||
|
|
@ -387,7 +393,7 @@ void MainWindow::closeEvent(QCloseEvent* event)
|
|||
void MainWindow::moveEvent(QMoveEvent *event)
|
||||
{
|
||||
QMainWindow::moveEvent(event);
|
||||
if (this->_w_watcher_list->isVisible()) {
|
||||
if (this->_w_watcher_task_list->isVisible()) {
|
||||
onShowBackgroundTaskList();
|
||||
}
|
||||
}
|
||||
|
|
@ -403,8 +409,8 @@ void MainWindow::onShowBackgroundTaskList()
|
|||
this->updateGeometry();
|
||||
this->_btn_task_watcher->updateGeometry();
|
||||
|
||||
this->_w_watcher_list->adjustSize();
|
||||
QSize pop_size = this->_w_watcher_list->size();
|
||||
this->_w_watcher_task_list->adjustSize();
|
||||
QSize pop_size = this->_w_watcher_task_list->size();
|
||||
|
||||
QPoint btn_top_teft = this->_btn_task_watcher->mapToGlobal(QPoint(0, 0));
|
||||
int btn_width = this->_btn_task_watcher->width();
|
||||
|
|
@ -421,15 +427,15 @@ void MainWindow::onShowBackgroundTaskList()
|
|||
// if (y < screen_rect.top())
|
||||
// y = btn_top_teft.y() + btn_height + 6;
|
||||
|
||||
this->_w_watcher_list->move(x, y);
|
||||
this->_w_watcher_list->show();
|
||||
this->_w_watcher_task_list->move(x, y);
|
||||
this->_w_watcher_task_list->show();
|
||||
}
|
||||
|
||||
|
||||
void MainWindow::resizeEvent(QResizeEvent *event)
|
||||
{
|
||||
QMainWindow::resizeEvent(event);
|
||||
if (this->_w_watcher_list->isVisible()) {
|
||||
if (this->_w_watcher_task_list->isVisible()) {
|
||||
onShowBackgroundTaskList();
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -15,7 +15,7 @@ class CDockWidget;
|
|||
}
|
||||
class QPlainTextEdit;
|
||||
class MeasureAnalysisTreeView;
|
||||
class QListWidget;
|
||||
class BackgroundTaskListView;
|
||||
class QPushButton;
|
||||
QT_END_NAMESPACE
|
||||
|
||||
|
|
@ -69,7 +69,7 @@ private:
|
|||
QPlainTextEdit* _plain_edit_info_output;
|
||||
QStatusBar* _status_bar;
|
||||
QPushButton* _btn_task_watcher;
|
||||
QListWidget* _w_watcher_list;
|
||||
BackgroundTaskListView* _w_watcher_task_list;
|
||||
|
||||
private:
|
||||
Ui::MainWindow *ui;
|
||||
|
|
|
|||
11
src/src.pro
11
src/src.pro
|
|
@ -40,7 +40,8 @@ INCLUDEPATH += \
|
|||
$${PWD}/NuclideLib \
|
||||
$${PWD}/AntiConformEnergySpectrumView\
|
||||
$${PWD}/CoincidenceEventTimeView\
|
||||
$${PWD}/NuclideAnalysisView
|
||||
$${PWD}/NuclideAnalysisView \
|
||||
$${PWD}/BackgroundTaskListView
|
||||
|
||||
|
||||
DEPENDPATH += \
|
||||
|
|
@ -62,13 +63,15 @@ DEPENDPATH += \
|
|||
$${PWD}/NuclideLib \
|
||||
$${PWD}/AntiConformEnergySpectrumView\
|
||||
$${PWD}/CoincidenceEventTimeView\
|
||||
$${PWD}/NuclideAnalysisView
|
||||
|
||||
$${PWD}/NuclideAnalysisView \
|
||||
$${PWD}/BackgroundTaskListView
|
||||
|
||||
|
||||
SOURCES += \
|
||||
2DSpectralCompliance/TwoDSpectralCompliance.cpp \
|
||||
AboutDlg.cpp \
|
||||
BackgroundTaskListView/BackgroundTaskListModel.cpp \
|
||||
BackgroundTaskListView/BackgroundTaskListView.cpp \
|
||||
BusyIndicator/BusyIndicator.cpp \
|
||||
CoincidenceEventTimeView/CoincidenceEventTimeView.cpp \
|
||||
CountRateAnalysisView/CountRateAnalysisView.cpp \
|
||||
|
|
@ -119,6 +122,8 @@ HEADERS += \
|
|||
2DSpectralCompliance/TwoDSpectralCompliance.h \
|
||||
AboutDlg.h \
|
||||
AnalysisTypeDefine.h \
|
||||
BackgroundTaskListView/BackgroundTaskListModel.h \
|
||||
BackgroundTaskListView/BackgroundTaskListView.h \
|
||||
BusyIndicator/BusyIndicator.h \
|
||||
CoincidenceEventTimeView/CoincidenceEventTimeView.h \
|
||||
CountRateAnalysisView/CountRateAnalysisView.h \
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user