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

373 lines
10 KiB
C++

#include "formhistory.h"
#include "ui_formhistory.h"
#include "commondata.h"
#include "mainwindow.h"
#include "dialogcalendar.h"
#include "formcalendarview.h"
FormHistory::FormHistory(QWidget *parent) :
QWidget(parent),
ui(new Ui::FormHistory)
{
ui->setupUi(this);
ui->widgetList->ChangeHeader();
ui->pushButton_DateEnd->hide();
m_nSearchDurationType = 0;
}
FormHistory::~FormHistory()
{
delete ui;
}
void FormHistory::ClickSearchDateStartEnd()
{
CommonData* pCommonData = MainWindow::GetCommonData();
QDate dateStart = pCommonData->GetDateSearchHistoryStart();
QDate dateEnd = pCommonData->GetDateSearchHistoryEnd();
QDate date = QDate::currentDate();
if(m_nSearchDurationType==0)
{
}
DialogCalendar dlg(this);
dlg.SetCalendarDate(date.year(), date.month(), 1);
dlg.SetDateStart(dateStart);
dlg.SetDateEnd(dateEnd);
//dlg.SetModeChangeStart();
MainWindow* pMainWindow = MainWindow::GetMainWindow();
pMainWindow->StopScreenSaverTimer();
connect(&dlg, SIGNAL(SetSearchDateUpdate(int)), this, SLOT(SetSearchDateUpdate(int)));
dlg.exec();
m_nSearchDurationType = dlg.GetTypeSearchDuration();
disconnect(&dlg, SIGNAL(SetSearchDateUpdate(int)), this, SLOT(SetSearchDateUpdate(int)));
pMainWindow->ResetScreenSaverTimer();
pMainWindow->StartScreenSaverTimer();
}
void FormHistory::on_pushButton_DateStart_clicked()
{
WRITE_FUNCTION_LOG();
ClickSearchDateStartEnd();
}
void FormHistory::on_pushButton_DateEnd_clicked()
{
WRITE_FUNCTION_LOG();
ClickSearchDateStartEnd();
}
void FormHistory::SetSearchDateUpdate(int nTypeSearchDuration)
{
WRITE_FUNCTION_LOG();
CommonData* pCommonData = MainWindow::GetCommonData();
//QDate dateStart = pMainWindow->GetDateSearchWorklistStart();// FormCalendarView::GetDateStart();
//QDate dateEnd = pMainWindow->GetDateSearchWorklistEnd();// FormCalendarView::GetDateEnd();
QDate dateStart = FormCalendarView::GetDateStart();
QDate dateEnd = FormCalendarView::GetDateEnd();
QDate dateToday = QDate::currentDate();
m_nSearchDurationType = nTypeSearchDuration;
pCommonData->GetSearchDateStartEnd(m_nSearchDurationType, dateStart, dateEnd);
pCommonData->SetDateSearchHistoryStart(dateStart);
pCommonData->SetDateSearchHistoryEnd(dateEnd);
QString strDateStart;
QString strDateEnd;
int nStartYear = dateStart.year();
int nStartMonth = dateStart.month();
int nStartDay = dateStart.day();
int nEndYear = dateEnd.year();
int nEndMonth = dateEnd.month();
int nEndDay = dateEnd.day();
strDateStart = QString("%1/%2/%3").arg(QString::number(nStartYear).rightJustified(4, '0')).arg(QString::number(nStartMonth).rightJustified(2, '0')).arg(QString::number(nStartDay).rightJustified(2, '0'));
strDateEnd = QString("%1/%2/%3").arg(QString::number(nEndYear).rightJustified(4, '0')).arg(QString::number(nEndMonth).rightJustified(2, '0')).arg(QString::number(nEndDay).rightJustified(2, '0'));
if(dateToday==dateStart)
{
ui->label_DateStart->setText("Today");
}
else
{
QString strSearchDate = QString("%1 ~ %2").arg(strDateStart).arg(strDateEnd);
ui->label_DateStart->setText(strSearchDate);
}
if(dateToday==dateEnd)
{
ui->label_DateEnd->setText("Today");
}
else
{
ui->label_DateEnd->setText(strDateEnd);
}
SEARCH_ITEM* pSearchItem = pCommonData->GetSearchItemHistory();
pSearchItem->m_strStudyDate = QString("%1-%2").arg(strDateStart).arg(strDateEnd);
}
void FormHistory::on_pushButton_Search_clicked()
{
WRITE_FUNCTION_LOG();
CommonData* pCommonData = MainWindow::GetCommonData();
QDate dateStart = pCommonData->GetDateSearchHistoryStart();
QDate dateEnd = pCommonData->GetDateSearchHistoryEnd();
SDatabase* pDatabase = NULL;
SEARCH_ITEM si;
pCommonData->GetSearchDateStartEnd(m_nSearchDurationType, dateStart, dateEnd);
pCommonData->SetDateSearchHistoryStart(dateStart);
pCommonData->SetDateSearchHistoryEnd(dateEnd);
pCommonData->ClearHistorySearchResult();
QDate dt = QDate::currentDate();
int nYear = dt.year();
int nMonth = dt.month();
int nDay = dt.day();
QString strSearchDate;
if(dateStart.isValid()==true)
{
}
else
{
strSearchDate = QString("%1/%2/%3").arg(nYear, 4, 10, QChar('0')).arg(nMonth, 2, 10, QChar('0')).arg(nDay, 2, 10, QChar('0'));
}
if(dateEnd.isValid()==true)
{
}
else
{
strSearchDate += QString("-%1/%2/%3").arg(nYear, 4, 10, QChar('0')).arg(nMonth, 2, 10, QChar('0')).arg(nDay, 2, 10, QChar('0'));
}
if(strSearchDate.length()<21)
{
QDate dt = dateStart;
int nYear = dt.year();
int nMonth = dt.month();
int nDay = dt.day();
strSearchDate += QString("%1/%2/%3").arg(nYear, 4, 10, QChar('0')).arg(nMonth, 2, 10, QChar('0')).arg(nDay, 2, 10, QChar('0'));
dt = dateEnd;
nYear = dt.year();
nMonth = dt.month();
nDay = dt.day();
strSearchDate += QString("-%1/%2/%3").arg(nYear, 4, 10, QChar('0')).arg(nMonth, 2, 10, QChar('0')).arg(nDay, 2, 10, QChar('0'));
}
si.m_strStudyDate = strSearchDate;
si.m_strPatientName = ui->plainTextEdit_PatientName->toPlainText();
si.m_strPatientID = ui->plainTextEdit_PatientID->toPlainText();
// 1. 결과를 담을 벡터를 먼저 가져옵니다. (기존 데이터를 비우는 처리는 ClearHistorySearchResult에서 담당)
vector<HISTORY_STUDY*>* pListHistorySearch = pCommonData->GetHistorySearchResult();
// pCommonData->ClearHistorySearchResult(); // 필요하다면 여기서 기존 결과를 비웁니다.
// 2. 이 작업을 위한 지역 DB 인스턴스를 생성하고 연결합니다.
SUTIL::SDatabase db(QString("GetHistoryStudyTask_%1").arg(reinterpret_cast<quintptr>(this)));
if (db.OpenDatabase("/home/birdhead/test.db") == 0) // 0이 성공
{
// 3. 새로운 API를 호출하여 결과 리스트 "값"을 직접 받습니다.
// (bWithDelete는 false라고 가정)
QList<QStringList> result = db.GetHistoryStudy(&si, false);
// 4. 새로운 range-based for 문으로 코드를 더 간결하게 만듭니다.
for (const QStringList& rowData : result)
{
HISTORY_STUDY* pHistoryStudy = new HISTORY_STUDY;
// 컬럼 순서가 일치한다고 가정하고 데이터를 복사합니다.
// SDI_TOTAL은 m_List의 크기를 넘어가지 않도록 하는 안전장치입니다.
for (int j = 0; j < rowData.size() && j < SDI_TOTAL; ++j)
{
QString* pData = pHistoryStudy->m_List[j];
if (pData) { // 포인터 유효성 검사
*pData = rowData.at(j);
}
}
pListHistorySearch->push_back(pHistoryStudy);
}
}
else
{
qWarning() << "DB open failed for GetHistoryStudy.";
}
/*
pDatabase = pCommonData->GetDatabase();
pDatabase->GetHistoryStudy(&si);
vector<HISTORY_STUDY*>* pListHistorySearch = pCommonData->GetHistorySearchResult();
QList<QStringList*>* pResult = pDatabase->GetResult();
int i=0;
for(i=0 ; i<pResult->size() ; i++)
{
HISTORY_STUDY* pHistoryStudy = new HISTORY_STUDY;
pListHistorySearch->push_back(pHistoryStudy);
QStringList* pListData = (*pResult)[i];
int j=0;
for(j=0 ; j<pListData->size() ; j++)
{
QString* pData = pHistoryStudy->m_List[j];
*pData = (*pListData)[j];
}
}
pCommonData->ReleaseDatabase();
*/
Init();
}
void FormHistory::Init()
{
WRITE_FUNCTION_LOG();
ui->widgetList->Clear();
ui->widgetList->ChangeHeader();
ui->widgetList->UpdateHistoryList();
ui->widgetList->Init();
}
void FormHistory::resizeEvent(QResizeEvent *event)
{
WRITE_FUNCTION_LOG();
int nDisplayType = MainWindow::GetCommonData()->GetDisplayType();
int nFontSize = 22;
if(nDisplayType==SDISPLAY_1280X1024)
{
nFontSize = 16;
ui->frame_PatientID->setGeometry(20, 28, 156, 32);
ui->frame_PatientName->setGeometry(195, 28, 156, 32);
ui->pushButton_DateStart->setGeometry(376, 28, 278, 32);
//ui->
ui->pushButton_DateEnd->setGeometry(580, 28, 178, 32);
ui->plainTextEdit_PatientID->setGeometry(30, 31, 140, 40);
ui->plainTextEdit_PatientName->setGeometry(205, 31, 140, 40);
ui->label_DateStart->setGeometry(18, 0, 260, 36);
ui->label_DateEnd->setGeometry(18, 0, 160, 36);
ui->widgetList->setGeometry(20, 91, 1150, 665);
ui->pushButton_USBExport->setGeometry(20, 91+665+30, 145, 45);
ui->pushButton_Search->setGeometry(1025, 21, 145, 45);
}
else if(nDisplayType==SDISPLAY_1920X1080)
{
ui->frame_PatientID->setGeometry(30, 34, 195, 40);
ui->frame_PatientName->setGeometry(250, 34, 195, 40);
ui->pushButton_DateStart->setGeometry(477, 34, 268, 40);
ui->pushButton_DateEnd->setGeometry(770, 34, 268, 40);
ui->plainTextEdit_PatientID->setGeometry(40, 40, 175, 50);
ui->plainTextEdit_PatientName->setGeometry(260, 40, 175, 50);
ui->label_DateStart->setGeometry(20, 0, 201, 40);
ui->label_DateEnd->setGeometry(20, 0, 201, 40);
ui->widgetList->setGeometry(30, 108, 1750, 640);
ui->pushButton_Search->setGeometry(1600, 24, 180, 56);
}
QString strPushButton = QString(
"QPushButton \
{ \
background: #153B44; \
font-family: 'Roboto'; \
font-size: %1px; \
font-weight: bold; \
border-radius: 8px; \
color: white; \
} \
\
QPushButton:pressed \
{ \
background: #1B4C54; \
}").arg(nFontSize);
ui->pushButton_Search->setStyleSheet(strPushButton);
}
#include "dialogexportusb.h"
void FormHistory::on_pushButton_USBExport_clicked()
{
WRITE_FUNCTION_LOG();
ui->widgetList->GetExportList();
CommonData* pCommonData = MainWindow::GetCommonData();
vector<QString>* pListExport = pCommonData->GetExportList();
if(pListExport->size()==0)
{
return;
}
DialogExportUSB dlg(this);
int nRet = dlg.exec();
}
void FormHistory::keyReleaseEvent(QKeyEvent *event)
{
WRITE_FUNCTION_LOG();
int nKey = event->key();
SThreadImageSave* pThread = MainWindow::GetCommonData()->GetThreadCaptureImage();
if(nKey==Qt::Key_F10)
{
pThread->MissCapture();
}
else if(nKey==Qt::Key_F11)
{
pThread->MissCapture();
}
}