438 lines
9.4 KiB
C++
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;
|
|
}
|