Refactor InputObject(EventFilter and VirtualKeyboard).

This commit is contained in:
sunwen
2022-06-14 14:03:19 +08:00
parent 589262781d
commit 020b40c55d
36 changed files with 783 additions and 598 deletions

View File

@@ -4,8 +4,6 @@
#include <QVBoxLayout>
#include <QLabel>
#include <QDateTime>
#include <QLineEdit>
#include <QTextEdit>
#include <QToolButton>
#include <QSqlTableModel>
#include <QUuid>
@@ -13,16 +11,20 @@
#include "dialogs/SelectDialog.h"
#include "DateSelectDialog.h"
#include "components/ListBox.h"
#include "components/ULineEdit.h"
#include "components/UTextEdit.h"
int queryValue(QSqlTableModel* model, int colID, const QVariant& var)
{
for (int i = 0; i < model->rowCount(); ++i) {
for (int i = 0; i < model->rowCount(); ++i)
{
if (model->data(model->index(i, colID)) == var) return i;
}
return -1;
}
EditPatientDialog::EditPatientDialog(QWidget *parent, Qt::WindowFlags f) : GUIFormBaseDialog(parent, f) {
EditPatientDialog::EditPatientDialog(QWidget* parent, Qt::WindowFlags f) : GUIFormBaseDialog(parent, f)
{
QVBoxLayout* layout = new QVBoxLayout(mFormWidget);
layout->setSpacing(10);
// add title
@@ -35,49 +37,50 @@ EditPatientDialog::EditPatientDialog(QWidget *parent, Qt::WindowFlags f) : GUIFo
//add old password
QLabel* lbl_id = new QLabel(this);
lbl_id->setText(tr("ID"));
le_id = new QLineEdit(this);
le_id = new ULineEdit(this);
layout->addWidget(lbl_id);
layout->addWidget(le_id);
QLabel* lbl_endline1 = new QLabel(this);
lbl_endline1->setObjectName("endline");
layout->addWidget(lbl_endline1);
QLabel* lbl_name= new QLabel(this);
QLabel* lbl_name = new QLabel(this);
lbl_name->setText(tr("Name"));
le_name = new QLineEdit(this);
le_name = new ULineEdit(this);
layout->addWidget(lbl_name);
layout->addWidget(le_name);
QLabel* lbl_endline2 = new QLabel(this);
lbl_endline2->setObjectName("endline");
layout->addWidget(lbl_endline2);
QLabel* lbl_sex= new QLabel(this);
QLabel* lbl_sex = new QLabel(this);
lbl_sex->setText(tr("Gender"));
layout->addWidget(lbl_sex);
btnSex = new ListBox(this);
btnSex->setText(tr("Female"));
btnSex->setProperty("idx",0);
btnSex->setProperty("idx", 0);
btnSex->setToolButtonStyle(Qt::ToolButtonTextBesideIcon);
btnSex->setLayoutDirection(Qt::RightToLeft);
btnSex->setObjectName("editvalBtn");
btnSex->setIcon(QIcon(":/icons/arrow-down.png"));
btnSex->setIconSize({30, 30});
btnSex->setIconSize({ 30, 30 });
btnSex->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Fixed);
connect(btnSex, &QToolButton::clicked,[=](){
connect(btnSex, &QToolButton::clicked, [=]() {
SelectDialog dialog(this);
QStringList items;
items<<tr("Female")<<tr("Male")<<tr("Other");
items << tr("Female") << tr("Male") << tr("Other");
dialog.setValues(items);
dialog.setSelectedValue(items[btnSex->property("idx").toInt()]);
dialog.setWindowModality(Qt::WindowModal);
if (dialog.exec() == QDialog::Accepted){
if (dialog.exec() == QDialog::Accepted)
{
btnSex->setText(dialog.getSelectedValue());
btnSex->setProperty("idx",items.indexOf(dialog.getSelectedValue()));
btnSex->setProperty("idx", items.indexOf(dialog.getSelectedValue()));
}
});
});
layout->addWidget(btnSex);
QLabel *lbl_endline9 = new QLabel(this);
QLabel* lbl_endline9 = new QLabel(this);
lbl_endline9->setFixedHeight(2);
lbl_endline9->setObjectName("endline");
layout->addWidget(lbl_endline9);
@@ -92,17 +95,18 @@ EditPatientDialog::EditPatientDialog(QWidget *parent, Qt::WindowFlags f) : GUIFo
btnDate->setLayoutDirection(Qt::RightToLeft);
btnDate->setObjectName("editvalBtn");
btnDate->setIcon(QIcon(":/icons/arrow-down.png"));
btnDate->setIconSize({30, 30});
btnDate->setIconSize({ 30, 30 });
btnDate->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Fixed);
btnDate->setText("1990-06-15");
connect(btnDate, &QToolButton::clicked,[=](){
connect(btnDate, &QToolButton::clicked, [=]() {
DateSelectDialog dialog(this);
dialog.setSelectedValue(btnDate->text());
dialog.setWindowModality(Qt::WindowModal);
if (dialog.exec() == QDialog::Accepted){
if (dialog.exec() == QDialog::Accepted)
{
btnDate->setText(dialog.getSelectedValue());
}
});
});
layout->addWidget(btnDate);
QLabel* lbl_endline5 = new QLabel(this);
lbl_endline5->setObjectName("endline");
@@ -110,7 +114,7 @@ EditPatientDialog::EditPatientDialog(QWidget *parent, Qt::WindowFlags f) : GUIFo
QLabel* lbl_comment = new QLabel(this);
lbl_comment->setText(tr("Comment"));
te_comment = new QTextEdit(this);
te_comment = new UTextEdit(this);
layout->addWidget(lbl_comment);
layout->addWidget(te_comment);
QLabel* lbl_endline6 = new QLabel(this);
@@ -122,15 +126,17 @@ EditPatientDialog::EditPatientDialog(QWidget *parent, Qt::WindowFlags f) : GUIFo
layout->addWidget(lbl_error);
}
EditPatientDialog::~EditPatientDialog() {
EditPatientDialog::~EditPatientDialog()
{
}
void EditPatientDialog::setPatientInformation(PatientInformation* information) {
void EditPatientDialog::setPatientInformation(PatientInformation* information)
{
if (information)
{
le_id->setText(information->ID);
btnSex->setText(information->Sex == tr("F")?tr("Female"):(information->Sex == tr("M")?tr("Male"):tr("Other")));
btnSex->setText(information->Sex == tr("F") ? tr("Female") : (information->Sex == tr("M") ? tr("Male") : tr("Other")));
le_name->setText(information->Name);
te_comment->setText(information->Comment);
btnDate->setText(information->BirthDate);
@@ -140,16 +146,18 @@ void EditPatientDialog::setPatientInformation(PatientInformation* information) {
}
}
void EditPatientDialog::clearPatientInformation() {
void EditPatientDialog::clearPatientInformation()
{
le_id->setText("");
// le_date->setText("");
// le_date->setText("");
le_name->setText("");
te_comment->setText("");
}
void EditPatientDialog::storePatientInformation() {
void EditPatientDialog::storePatientInformation()
{
store.PatientUID = currentPatientUID;
// store.AddDate = AddDate;
// store.AddDate = AddDate;
store.ID = le_id->text();
store.BirthDate = le_date->text();
store.Name = le_name->text();
@@ -157,15 +165,18 @@ void EditPatientDialog::storePatientInformation() {
store.Comment = te_comment->toPlainText();
}
bool EditPatientDialog::updateReferenceData() {
bool EditPatientDialog::updateReferenceData()
{
PatientInformation* inf = getPatientInformation();
if (le_id->text().isEmpty()){
if (le_id->text().isEmpty())
{
lbl_error->setText("ID can't be empty!");
lbl_error->setVisible(true);
return false;
}
inf->ID = le_id->text().trimmed();
if (le_name->text().isEmpty()){
if (le_name->text().isEmpty())
{
lbl_error->setText("Patient Name can't be empty!");
lbl_error->setVisible(true);
return false;
@@ -173,7 +184,8 @@ bool EditPatientDialog::updateReferenceData() {
inf->Name = le_name->text().trimmed();
int selectedRow = 0;
bool isAdd = currentPatientUID.isEmpty();
if (isAdd) {
if (isAdd)
{
int ref_rowid = queryValue(model, 1, inf->ID);
if (ref_rowid >= 0)
{
@@ -185,28 +197,30 @@ bool EditPatientDialog::updateReferenceData() {
inf->AddDate = QDateTime::currentDateTime().toString("yyyy-MM-dd HH:mm:ss");
model->insertRow(0);
}
else{
else
{
inf->PatientUID = currentPatientUID;
selectedRow = queryValue(model, 1, inf->ID);
inf->AddDate = AddDate;
}
inf->Sex = btnSex->text()==tr("Female")?"F":(tr("Male")==btnSex->text()?"M":"O");
inf->Sex = btnSex->text() == tr("Female") ? "F" : (tr("Male") == btnSex->text() ? "M" : "O");
inf->BirthDate = btnDate->text();
inf->Comment = te_comment->toPlainText();
#define ADD_PATIENT_PROPERTY(val)\
#define ADD_PATIENT_PROPERTY(val)\
model->setData(model->index(selectedRow,PatientInformationEnum:: val),inf-> val);
EDIT_PATIENT()
#undef ADD_PATIENT_PROPERTY
if (model->submitAll())
{
return true;
}
else {
lbl_error->setText("Submit to database error!");
lbl_error->setVisible(true);
return false;
}
EDIT_PATIENT()
#undef ADD_PATIENT_PROPERTY
if (model->submitAll())
{
return true;
}
else
{
lbl_error->setText("Submit to database error!");
lbl_error->setVisible(true);
return false;
}
}