feat: Add CEchoTestDialog & its style
This commit is contained in:
135
src/dialogs/CEchoTestDialog.cpp
Normal file
135
src/dialogs/CEchoTestDialog.cpp
Normal file
@@ -0,0 +1,135 @@
|
|||||||
|
#include "CEchoTestDialog.h"
|
||||||
|
#include "action/ActionCreator.h"
|
||||||
|
#include "dicom/CEchoAction.h"
|
||||||
|
#include "components/LoadingWidget.h"
|
||||||
|
|
||||||
|
#include <QVBoxLayout>
|
||||||
|
#include <QGridLayout>
|
||||||
|
#include <QLabel>
|
||||||
|
#include <QVariant>
|
||||||
|
#include <QPushButton>
|
||||||
|
#include <QShowEvent>
|
||||||
|
#include <QGuiApplication>
|
||||||
|
#include <QScreen>
|
||||||
|
|
||||||
|
namespace
|
||||||
|
{
|
||||||
|
const int ENDLINE_SPACE = 3;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
CEchoTestDialog::CEchoTestDialog(QWidget* aParent, Qt::WindowFlags aFlags)
|
||||||
|
:GUIFormBaseDialog(aParent, aFlags)
|
||||||
|
,mMessageLayout(new QGridLayout)
|
||||||
|
,mLoadingWidget(nullptr)
|
||||||
|
,mAction(new CEchoAction(this))
|
||||||
|
,mIndex(0)
|
||||||
|
,mCurrentMessageLabel(nullptr)
|
||||||
|
,mStarted(false)
|
||||||
|
{
|
||||||
|
// setFocusPolicy(Qt::ClickFocus);
|
||||||
|
setButtonMode(DialogButtonMode::OkOnly);
|
||||||
|
// setSizePolicy(QSizePolicy::Fixed,QSizePolicy::MinimumExpanding);
|
||||||
|
setMinimumHeight(200);
|
||||||
|
setFixedWidth(800);
|
||||||
|
QRect screenRect = QGuiApplication::primaryScreen()->geometry();
|
||||||
|
QPoint screenCenter = screenRect.center();
|
||||||
|
QPoint dialogPos = screenCenter - QPoint(width() / 2, height()/ 2);
|
||||||
|
move(dialogPos);
|
||||||
|
|
||||||
|
auto layout = new QVBoxLayout(mFormWidget);
|
||||||
|
//Title
|
||||||
|
QLabel* title = new QLabel(this);
|
||||||
|
title->setAlignment(Qt::AlignCenter);
|
||||||
|
title->setText(tr("Test DICOM Connection"));
|
||||||
|
title->setObjectName("title");
|
||||||
|
layout->addWidget(title);
|
||||||
|
layout->addLayout(mMessageLayout);
|
||||||
|
layout->addSpacerItem(new QSpacerItem(2,2,QSizePolicy::Minimum,QSizePolicy::MinimumExpanding));
|
||||||
|
connect(mAction, &CEchoAction::actionStepStart,this,&CEchoTestDialog::addActionMessage);
|
||||||
|
connect(mAction, &CEchoAction::actionStepCompleted,this,&CEchoTestDialog::updateCurrentActionResult);
|
||||||
|
connect(mAction, &CEchoAction::actionCompleted,this,&CEchoTestDialog::handleActionFinish);
|
||||||
|
mBtnOk->setEnabled(false);
|
||||||
|
QLabel* endline = new QLabel(this);
|
||||||
|
endline->setFixedHeight(ENDLINE_SPACE);
|
||||||
|
endline->setObjectName("endline");
|
||||||
|
layout->addWidget(endline);
|
||||||
|
}
|
||||||
|
|
||||||
|
CEchoTestDialog::~CEchoTestDialog()
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
void CEchoTestDialog::setCEchoSettings(const QList<CEchoSetting>& aCEchoSettings)
|
||||||
|
{
|
||||||
|
if (mAction){
|
||||||
|
for (const CEchoSetting& item : aCEchoSettings)
|
||||||
|
{
|
||||||
|
mAction->addCEchoActionItem(item);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
setFixedHeight(200+ 30 *aCEchoSettings.length());
|
||||||
|
}
|
||||||
|
|
||||||
|
bool CEchoTestDialog::updateReferenceData()
|
||||||
|
{
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
void CEchoTestDialog::addActionMessage(const QString& aMessage)
|
||||||
|
{
|
||||||
|
mCurrentMessageLabel = new QLabel(aMessage);
|
||||||
|
if (mCurrentMessageLabel!=nullptr){
|
||||||
|
mCurrentMessageLabel->setObjectName("CEchoMessage");
|
||||||
|
mLoadingWidget = new LoadingWidget(this);
|
||||||
|
mLoadingWidget->setFixedSize(24,24);
|
||||||
|
mLoadingWidget->setMaxDiameter(5);
|
||||||
|
mLoadingWidget->setMinDiameter(1);
|
||||||
|
mLoadingWidget->setCount(8);
|
||||||
|
mMessageLayout->addWidget(mLoadingWidget,mIndex,1, Qt::AlignRight);
|
||||||
|
mMessageLayout->addWidget(mCurrentMessageLabel,mIndex,0);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void CEchoTestDialog::updateCurrentActionResult(const ActionResult& aResult)
|
||||||
|
{
|
||||||
|
if (mLoadingWidget){
|
||||||
|
delete mLoadingWidget;
|
||||||
|
}
|
||||||
|
QLabel * icon = new QLabel(this);
|
||||||
|
QPixmap pix(aResult.Code == ActionCode::Sucessed?":/icons/selected.png":":/icons/close_circle.png");
|
||||||
|
icon->setPixmap(pix.scaledToHeight(24, Qt::TransformationMode::SmoothTransformation));
|
||||||
|
mMessageLayout->addWidget(icon,mIndex,1, Qt::AlignRight);
|
||||||
|
if (mCurrentMessageLabel!=nullptr){
|
||||||
|
if(aResult.Code != ActionCode::Sucessed)mCurrentMessageLabel->setStyleSheet("color:red");
|
||||||
|
mCurrentMessageLabel->setText(aResult.Data.toString());
|
||||||
|
}
|
||||||
|
mIndex++;
|
||||||
|
}
|
||||||
|
|
||||||
|
void CEchoTestDialog::handleActionFinish(const ActionResult& aResult)
|
||||||
|
{
|
||||||
|
|
||||||
|
if (mCurrentMessageLabel!=nullptr){
|
||||||
|
QLabel * icon = new QLabel(this);
|
||||||
|
QPixmap pix(aResult.Code == ActionCode::Sucessed?":/icons/selected.png":":/icons/close_circle.png");
|
||||||
|
icon->setPixmap(pix.scaledToHeight(24, Qt::TransformationMode::SmoothTransformation));
|
||||||
|
mMessageLayout->addWidget(icon,mIndex,1, Qt::AlignRight);
|
||||||
|
if(aResult.Code != ActionCode::Sucessed)mCurrentMessageLabel->setStyleSheet("color:red");
|
||||||
|
mCurrentMessageLabel->setText(aResult.Data.toString());
|
||||||
|
}
|
||||||
|
mIndex++;
|
||||||
|
mLoadingWidget->setVisible(false);
|
||||||
|
mBtnOk->setEnabled(true);
|
||||||
|
}
|
||||||
|
|
||||||
|
void CEchoTestDialog::showEvent(QShowEvent *aEvent)
|
||||||
|
{
|
||||||
|
QDialog::showEvent(aEvent);
|
||||||
|
if (mStarted) return;
|
||||||
|
mAction->execute();
|
||||||
|
mStarted = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
39
src/dialogs/CEchoTestDialog.h
Normal file
39
src/dialogs/CEchoTestDialog.h
Normal file
@@ -0,0 +1,39 @@
|
|||||||
|
#ifndef BF46771C_39DB_408E_8297_B979E36AC297
|
||||||
|
#define BF46771C_39DB_408E_8297_B979E36AC297
|
||||||
|
|
||||||
|
#include "GUIFormBaseDialog.h"
|
||||||
|
#include "dicom/CEchoSetting.h"
|
||||||
|
#include "dicom/CEchoAction.h"
|
||||||
|
|
||||||
|
|
||||||
|
class QGridLayout;
|
||||||
|
class LoadingWidget;
|
||||||
|
class QLabel;
|
||||||
|
class CEchoTestDialog :public GUIFormBaseDialog
|
||||||
|
{
|
||||||
|
Q_OBJECT
|
||||||
|
|
||||||
|
public:
|
||||||
|
explicit CEchoTestDialog(QWidget* aParent = nullptr, Qt::WindowFlags aFlags = Qt::WindowFlags());
|
||||||
|
~CEchoTestDialog() override;
|
||||||
|
void setCEchoSettings(const QList<CEchoSetting>& aCEchoSettings);
|
||||||
|
protected:
|
||||||
|
bool updateReferenceData() override;
|
||||||
|
void showEvent(QShowEvent *aEvent) override;
|
||||||
|
|
||||||
|
private:
|
||||||
|
void addActionMessage(const QString& aMessage);
|
||||||
|
void updateCurrentActionResult(const ActionResult& aResult);
|
||||||
|
void handleActionFinish(const ActionResult& aResult);
|
||||||
|
|
||||||
|
private:
|
||||||
|
QGridLayout* mMessageLayout;
|
||||||
|
LoadingWidget* mLoadingWidget;
|
||||||
|
CEchoAction* mAction;
|
||||||
|
int mIndex;
|
||||||
|
QLabel* mCurrentMessageLabel;
|
||||||
|
bool mStarted;
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
#endif /* BF46771C_39DB_408E_8297_B979E36AC297 */
|
||||||
@@ -846,6 +846,10 @@ QToolButton#mppsSettingsButton{
|
|||||||
text-align: center;
|
text-align: center;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
QPushButton#cechoButton{
|
||||||
|
background: #365880;
|
||||||
|
}
|
||||||
|
|
||||||
/*------AccountTableForm-----------------------------------------------------*/
|
/*------AccountTableForm-----------------------------------------------------*/
|
||||||
QWidget#commandWidgetnoBBorder {
|
QWidget#commandWidgetnoBBorder {
|
||||||
min-height: 123px;
|
min-height: 123px;
|
||||||
@@ -905,6 +909,12 @@ QPushButton#btnOK {
|
|||||||
font-weight: bold;
|
font-weight: bold;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
QPushButton#btnOK:disabled {
|
||||||
|
background: #365880;
|
||||||
|
font-weight: bold;
|
||||||
|
color: #606060;
|
||||||
|
}
|
||||||
|
|
||||||
/* GUIFormBaseDialog -> AccountFormDialog */
|
/* GUIFormBaseDialog -> AccountFormDialog */
|
||||||
QToolButton#changePwdBtn{
|
QToolButton#changePwdBtn{
|
||||||
qproperty-icon:url(":/icons/edit.png");
|
qproperty-icon:url(":/icons/edit.png");
|
||||||
@@ -1225,6 +1235,10 @@ QWidget#ScanProcessWidget QLabel#ScanProcessInformation{
|
|||||||
font-size: 50px;
|
font-size: 50px;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
QWidget#formWidget QLabel#CEchoMessage{
|
||||||
|
font-size: 24px;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user