SVG5/dialogprogress.cpp
2025-10-12 13:55:56 +09:00

438 lines
9.4 KiB
C++

#include "dialogprogress.h"
#include "ui_dialogprogress.h"
#include "mainwindow.h"
DialogProgress::DialogProgress(QWidget *parent) :
QDialog(parent),
ui(new Ui::DialogProgress)
{
ui->setupUi(this);
m_bAutoRetryDICOMSend = false;
//setWindowFlags(Qt::Window | Qt::FramelessWindowHint);
//setAttribute(Qt::WA_TranslucentBackground);
//setWindowFlags(Qt::CustomizeWindowHint);
setWindowFlags(Qt::FramelessWindowHint | Qt::Dialog | Qt::Popup);
ui->pushButton_Cancel->hide();
ui->pushButton_Send->hide();
m_bError = false;
connect(&m_TimerDisplay, SIGNAL(timeout()), this, SLOT(OnTimerCalled()));
}
DialogProgress::~DialogProgress()
{
disconnect(&m_TimerDisplay, SIGNAL(timeout()), this, SLOT(OnTimerCalled()));
delete ui;
}
int DialogProgress::exec()
{
int nRet = 0;
//MainWindow* pMainWindow = MainWindow::GetMainWindow();
//int nCheck = pMainWindow->CheckAliveWorklist();
QString strText;
//if(nCheck<1)
{
strText = ui->progressBar->text();
//ui->label_Info->hide();
//ChangeProgress(0);
}
//ui->pushButton_Cancel->hide();
nRet = QDialog::exec();
return nRet;
}
void DialogProgress::ChangeProgress(int nProgress)
{
ui->progressBar->hide();
ui->label_Info->show();
ui->label_Info->setText("4 Images Send Complete!");
//ui->label_Info->setText("4 Images Delete!");
ui->pushButton_Cancel->setText("OK");
}
void DialogProgress::on_pushButton_Cancel_clicked()
{
if(m_nType&0x10)
{
CommonData* pCommonData = MainWindow::GetCommonData();
SThreadSendDICOM* pThreadSendDICOM = pCommonData->GetThreadSendDICOM();
if(pThreadSendDICOM->GetCurrentState()&0x40)
{
pThreadSendDICOM->SetExitSendImageList();
while(pThreadSendDICOM->IsExitSendImageList()==true)
{
usleep(10*1000);
}
}
}
if(m_TimerDisplay.isActive()==true)
{
m_TimerDisplay.stop();
}
done(QDialog::Rejected);
}
void DialogProgress::OnWorklistComplete()
{
if(m_TimerDisplay.isActive()==true)
{
m_TimerDisplay.stop();
}
done(QDialog::Accepted);
}
void DialogProgress::OnWorklistError()
{
DisplayInfo(-1);
//if(m_TimerDisplay.isActive()==true)
{
//m_TimerDisplay.stop();
}
//done(QDialog::Accepted);
}
void DialogProgress::SendComplete()
{
m_strSendInfo = QString("Send Complete!!");
ui->pushButton_Cancel->show();
ui->pushButton_Cancel->setText("OK");
update();
//QThread::msleep(1000);
m_bSendComplete = true;
}
void DialogProgress::DisplayInfo(int nValue)
{
if(nValue<0)
{
//m_TimerDisplay.stop();
QString strError = "";
if(nValue==-11)
{
strError = QString("Error: Patient Info");
if(m_TimerDisplay.isActive()==true)
{
m_TimerDisplay.stop();
}
}
else if(nValue==-12)
{
strError = QString("Error: Network Connection");
if(m_TimerDisplay.isActive()==true)
{
m_TimerDisplay.stop();
}
}
else
{
strError = QString("Check Server Info!! (%1)").arg(nValue);
}
ui->label_Info->setText(strError);
ui->label_Info->show();
ui->progressBar->setTextVisible(false);
ui->pushButton_Cancel->setText("OK");
ui->progressBar->setValue(0);
ui->pushButton_Cancel->show();
ui->pushButton_Cancel->update();
QString strStyle = QString("QLabel \n"
"{ \n"
" color: black; \n"
" font-family: 'Roboto'; \n"
" font-size: 18px; \n"
" font-weight: light; \n"
" padding-left: 0px; \n"
" padding-top: 0px; \n"
//" qproperty-backgroundVisible: false; \n"
" border: none; \n"
//" qproperty-verticalScrollBarPolicy: 'ScrollBarAlwaysOff'; \n"
" background: transparent; \n"
" qproperty-alignment: 'AlignCenter'; \n"
"} \n");
ui->label_Info->setStyleSheet(strStyle);
m_bError = true;
}
else
{
QString strInfo = QString("Search...");
ui->label_Info->setText(strInfo);
}
}
void DialogProgress::DisplayInfo(QString strInfo)
{
m_strSendInfo = strInfo;
}
void DialogProgress::DisplayInfo(int nValue, int nTotal)
{
m_nSendCount = nValue;
m_nSendTotal = nTotal;
}
void DialogProgress::Init(int nType)
{
m_nSendCount = 0;
m_nSendTotal = 0;
m_bSendComplete = false;
m_nType = nType;
m_nCount = 0;
//ui->label_Info->hide();
ui->label_Info->setText("Connect to Server");
ui->progressBar->show();
ui->pushButton_Cancel->setText("Cancel");
ui->progressBar->setTextVisible(false);
QString strStyle = QString("QLabel \n"
"{ \n"
" font-family: 'Roboto'; \n"
" font-size: 18px; \n"
" font-weight: light; \n"
" padding-left: 0px; \n"
" padding-top: 0px; \n"
//" qproperty-backgroundVisible: false; \n"
" border: none; \n"
//" qproperty-verticalScrollBarPolicy: 'ScrollBarAlwaysOff'; \n"
" background: transparent; \n"
" qproperty-alignment: 'AlignCenter'; \n"
"} \n");
ui->label_Info->setStyleSheet(strStyle);
//if(nType==0)
{
m_TimerDisplay.setInterval(30);
if(m_TimerDisplay.isActive()==false)
{
m_TimerDisplay.start(30);
}
if(nType&0x01)
{
ui->progressBar->setRange(0, 1);
ui->progressBar->setValue(-1);
}
else
{
ui->progressBar->setRange(0, 100);
ui->progressBar->setValue(100);
}
if(nType&0x02)
{
ui->label_Info->setText("Storage Clean");
}
if(nType&0x10)
{
//m_nType = 1;
ui->pushButton_Cancel->show();
}
else
{
ui->pushButton_Cancel->hide();
}
if(nType&0x40)
{
ui->pushButton_Cancel->show();
ui->pushButton_Cancel->setText("OK");
if(nType&0x01)
{
ui->label_Info->setText("Error: Database");
}
else if(nType&0x02)
{
ui->label_Info->setText("Error: Database Lock");
}
else if(nType&0x04)
{
ui->label_Info->setText("Error: Image File");
}
}
}
}
void DialogProgress::SetAutoRetryDICOMSend(bool bSet)
{
m_bAutoRetryDICOMSend = bSet;
}
void DialogProgress::OnTimerCalled()
{
if(m_nType==0)
{
m_nCount++;
ui->progressBar->setValue(m_nCount%100);
}
else if(m_nType&0x01)
{
//DICOM Worklist, Storage
if(m_nSendTotal>0)
{
ui->progressBar->setRange(0, m_nSendTotal);
}
if(m_nSendCount>0)
{
ui->progressBar->setValue(m_nSendCount);
ui->label_Info->setText(m_strSendInfo);
}
else if(m_nSendCount<0)
{
int nValue = ui->progressBar->value();
ui->progressBar->setValue(0);
ui->label_Info->setText("Send Complete");
m_bSendComplete = true;
}
if(m_bError==true)
{
ui->label_Info->setText("Failed: Send DICOM");
m_TimerDisplay.stop();
ui->pushButton_Cancel->setText("Close");
if(m_bAutoRetryDICOMSend==true)
{
done(QDialog::Accepted);
}
else
{
ui->pushButton_Send->show();
ui->pushButton_Cancel->setGeometry(360, 70, 130, 40);
ui->pushButton_Send->setGeometry(180, 70, 130, 40);
}
}
else
{
if(m_bSendComplete==true)
{
m_TimerDisplay.stop();
CommonData* pCommonData = MainWindow::GetCommonData();
if(pCommonData->IsAutoCloseSendFinish()==true)
{
done(QDialog::Accepted);
}
else
{
ui->pushButton_Cancel->setText("Close");
ui->pushButton_Cancel->setVisible(true);
}
}
}
}
else if(m_nType&0x02)
{
ui->label_Info->setText("Storage Clean");
m_nCount++;
ui->progressBar->setValue(m_nCount%100);
}
/*
else if(m_nType==3)
{
m_TimerDisplay.stop();
ui->label_Info->setText("Error: Check Network Share Folder Setting!!!!");
m_nCount++;
ui->progressBar->setValue(0);
ui->pushButton_Cancel->setText("Done");
ui->pushButton_Cancel->show();
}
*/
}
void DialogProgress::SetTypeMakeDICOM()
{
m_nDICOMProgressType = 1;
}
void DialogProgress::SetTypeSendDICOM()
{
m_nDICOMProgressType = 2;
}
void DialogProgress::keyReleaseEvent(QKeyEvent *event)
{
int nKey = event->key();
SThreadImageSave* pThread = MainWindow::GetCommonData()->GetThreadCaptureImage();
if(nKey==Qt::Key_F10)
{
pThread->MissCapture();
}
else if(nKey==Qt::Key_F11)
{
pThread->MissCapture();
}
}
void DialogProgress::reject()
{
}
void DialogProgress::on_pushButton_Send_clicked()
{
done(QDialog::Accepted);
}
bool DialogProgress::IsError()
{
return m_bError;
}