#include "PacsSettingsDialog.h" #include "dialogs/DicomSettingsArea.h" #include "json/jsonobject.h" #include "log/LogManager.h" #include "components/ErrorLabel.h" #include "components/LoadingWidget.h" #include "action/GetPACSSettingAction.h" #include "recon/PACSSettingsDataModel.h" #include "dicom/CEchoSetting.h" #include "DialogManager.h" #include #include #include #include namespace { const int ENDLINE_SPACE = 3; } PacsSettingsDialog::PacsSettingsDialog(QWidget* aParent, Qt::WindowFlags aWindowFlag) : GUIFormBaseDialog(aParent, aWindowFlag) , mErrorText(new ErrorLabel(this)) , mLoadingWidget(new LoadingWidget(this)) , mTable(new QTableView(this)) , mModel(new PACSSettingsDataModel(this)) , mAction(new GetPACSSettingAction(this)) , mCEchoBtn(new QPushButton(this)) , mStarted(false) { setFixedWidth(635); setButtonMode(OkOnly); QVBoxLayout* layout = new QVBoxLayout(mFormWidget); layout->setSpacing(10); //Title QLabel* title = new QLabel(this); title->setAlignment(Qt::AlignCenter); title->setText(tr("PACS Settings")); title->setObjectName("title"); layout->addWidget(title); mLoadingWidget->setFixedHeight(200); mTable->setFixedHeight(200); mTable->setSelectionMode(QAbstractItemView::NoSelection); mTable->setVisible(false); mErrorText->setVisible(false); QLabel* endline = new QLabel(this); endline->setFixedHeight(ENDLINE_SPACE); endline->setObjectName("endline"); layout->addSpacerItem(new QSpacerItem(2,2,QSizePolicy::Minimum,QSizePolicy::Expanding)); layout->addWidget(mLoadingWidget); layout->addWidget(mTable); layout->addWidget(mErrorText); layout->addSpacerItem(new QSpacerItem(2,2,QSizePolicy::Minimum,QSizePolicy::Expanding)); mCEchoBtn->setObjectName("cechoButton"); mCEchoBtn->setText(tr("Test Connection")); mCEchoBtn->setVisible(false); layout->addWidget(mCEchoBtn,Qt::AlignCenter); layout->addWidget(endline); mBtnOk->setEnabled(false); connect(mAction,&AsyncAction::actionCompleted,this, &PacsSettingsDialog::handleActionFinish); connect(mCEchoBtn, &QPushButton::clicked, [=](){ QList list; CEchoSetting setting; auto data = mModel->getPACSSettings(); for(auto item : data) { setting.AETitle = item.AETitle; setting.IP = item.ServerIP; setting.Port = item.Port; setting.ServerTitle = item.ServerAETitle; setting.Type = 1; list.append(setting); } DialogManager::Default()->requestCEchoTest(list); }); } PacsSettingsDialog::~PacsSettingsDialog() { } bool PacsSettingsDialog::updateReferenceData() { return true; } void PacsSettingsDialog::handleActionFinish(const ActionResult& aResult) { if (aResult.Code == Failed){ mErrorText->setText(aResult.Data.toString()); mLoadingWidget->setVisible(false); mErrorText->setVisible(true); } else{ mModel->setPACSSettings(mAction->getStoragePoints()); mTable->setModel(mModel); mTable->horizontalHeader()->setSectionResizeMode(QHeaderView::Fixed); mTable->setColumnWidth(0,120); mTable->setColumnWidth(1,160); mTable->setColumnWidth(2,80); mTable->setColumnWidth(3,150); mTable->setColumnWidth(4,80); mLoadingWidget->setVisible(false); mTable->setVisible(true); mCEchoBtn->setVisible(true); } mBtnOk->setEnabled(true); } void PacsSettingsDialog::showEvent(QShowEvent *aEvent) { QDialog::showEvent(aEvent); if (mStarted) return; mAction->execute(); mStarted = true; }