2025-03-14 17:18:25 +08:00
|
|
|
#include <QMessageBox>
|
2025-03-04 09:44:03 +08:00
|
|
|
#include "renameModel.h"
|
|
|
|
|
#include "projectModelDlg.h"
|
2025-03-14 17:18:25 +08:00
|
|
|
#include "dataBase.h"
|
2025-03-04 09:44:03 +08:00
|
|
|
#include "ui_renameModel.h"
|
|
|
|
|
|
|
|
|
|
RenameModel::RenameModel(QWidget *parent)
|
|
|
|
|
: QDialog(parent)
|
|
|
|
|
, ui(new Ui::renameModel)
|
|
|
|
|
,_pParent(nullptr)
|
|
|
|
|
{
|
|
|
|
|
ui->setupUi(this);
|
|
|
|
|
this->setWindowFlags(Qt::FramelessWindowHint | windowFlags());
|
|
|
|
|
_pParent = dynamic_cast<projectModelDlg*>(parent);
|
|
|
|
|
initial();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
RenameModel::~RenameModel()
|
|
|
|
|
{
|
|
|
|
|
delete ui;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void RenameModel::initial()
|
|
|
|
|
{
|
|
|
|
|
connect(ui->btn_ok,&QPushButton::clicked,this,&RenameModel::onOkClicked);
|
|
|
|
|
connect(ui->btn_cancel,&QPushButton::clicked,this,&RenameModel::onCancelClicked);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void RenameModel::showCenter()
|
|
|
|
|
{
|
|
|
|
|
if (!_pParent) {
|
|
|
|
|
qWarning("No parent widget found; dialog will appear at the default position.");
|
|
|
|
|
show();
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// 父窗口的几何信息
|
|
|
|
|
QRect parentRect = _pParent->geometry();
|
|
|
|
|
|
|
|
|
|
// 对话框的几何信息
|
|
|
|
|
int dialogWidth = width();
|
|
|
|
|
int dialogHeight = height();
|
|
|
|
|
|
|
|
|
|
// 计算中心位置
|
|
|
|
|
int x = parentRect.x() + (parentRect.width() - dialogWidth) / 2;
|
|
|
|
|
int y = parentRect.y() + (parentRect.height() - dialogHeight) / 2;
|
|
|
|
|
|
|
|
|
|
// 移动对话框到中心位置并显示
|
|
|
|
|
move(x, y);
|
|
|
|
|
show();
|
|
|
|
|
|
|
|
|
|
setShowName();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void RenameModel::setShowName()
|
|
|
|
|
{
|
|
|
|
|
if(_pParent)
|
|
|
|
|
{
|
|
|
|
|
QString str = _pParent->getProjectName();
|
|
|
|
|
ui->lineEdit_name->setText(str);
|
|
|
|
|
|
|
|
|
|
ui->lineEdit_name->setSelection(0,str.length());
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
2025-03-14 17:18:25 +08:00
|
|
|
projectState RenameModel::couldSave()
|
2025-03-04 09:44:03 +08:00
|
|
|
{
|
|
|
|
|
if(_pParent)
|
|
|
|
|
{
|
2025-03-14 17:18:25 +08:00
|
|
|
QString meta = _pParent->getMetaName();
|
2025-03-07 19:24:19 +08:00
|
|
|
QString str = ui->lineEdit_name->text();
|
2025-03-04 09:44:03 +08:00
|
|
|
if(str == QString::fromWCharArray(L"新建"))
|
|
|
|
|
{
|
2025-03-14 17:18:25 +08:00
|
|
|
return Err;
|
2025-03-04 09:44:03 +08:00
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
//todo:判断输入的名称是否存在
|
2025-03-14 17:18:25 +08:00
|
|
|
QMap<QString,QJsonObject> map = DataBase::GetInstance()->getCheckStateFromManager(str);
|
|
|
|
|
if(map.isEmpty())
|
|
|
|
|
{
|
|
|
|
|
return NotExist;
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
bool val = _pParent->ifProjectEqual(map);
|
|
|
|
|
if(val){
|
|
|
|
|
return Exist;
|
|
|
|
|
}
|
|
|
|
|
else{
|
|
|
|
|
return Changed;
|
|
|
|
|
}
|
|
|
|
|
}
|
2025-03-04 09:44:03 +08:00
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void RenameModel::onOkClicked()
|
|
|
|
|
{
|
|
|
|
|
if(_pParent)
|
|
|
|
|
{
|
2025-03-14 17:18:25 +08:00
|
|
|
projectState state = couldSave();
|
|
|
|
|
switch(state){
|
|
|
|
|
case Err:
|
|
|
|
|
ui->label_info->setText(QString::fromWCharArray(L"请输入需保存的名称"));
|
|
|
|
|
break;
|
|
|
|
|
case NotExist:
|
2025-03-04 09:44:03 +08:00
|
|
|
_pParent->generate(ui->lineEdit_name->text());
|
2025-03-14 17:18:25 +08:00
|
|
|
ui->label_info->clear();
|
2025-03-04 09:44:03 +08:00
|
|
|
hide();
|
2025-03-14 17:18:25 +08:00
|
|
|
break;
|
|
|
|
|
case Exist:
|
|
|
|
|
ui->label_info->setText(QString::fromWCharArray(L"该模型已存在"));
|
|
|
|
|
break;
|
|
|
|
|
case Changed:
|
|
|
|
|
QMessageBox msgBox;
|
|
|
|
|
msgBox.setText(QString::fromWCharArray(L"提示"));
|
|
|
|
|
msgBox.setInformativeText(QString::fromWCharArray(L"该模型已存在且与同名模型不一致,是否替换库模型?"));
|
|
|
|
|
msgBox.setStandardButtons(QMessageBox::Yes | QMessageBox::Cancel);
|
|
|
|
|
msgBox.setDefaultButton(QMessageBox::Cancel);
|
|
|
|
|
int ret = msgBox.exec();
|
|
|
|
|
if(ret == QMessageBox::Yes)
|
|
|
|
|
{
|
|
|
|
|
QMap<QString,QJsonObject> mapCheckState = DataBase::GetInstance()->getCheckStateFromManager(ui->lineEdit_name->text()); //获取选择状态
|
|
|
|
|
QString sRes = _pParent->modifyProjectModel(mapCheckState);
|
|
|
|
|
if(!sRes.isEmpty())
|
|
|
|
|
{
|
|
|
|
|
QMessageBox::information(NULL, QString::fromWCharArray(L"提示"), QString::fromWCharArray(L"修改模型成功"));
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
QMessageBox::information(NULL, QString::fromWCharArray(L"提示"), QString::fromWCharArray(L"修改模型失败"));
|
|
|
|
|
}
|
|
|
|
|
hide();
|
|
|
|
|
}
|
|
|
|
|
else if(ret == QMessageBox::Cancel)
|
|
|
|
|
{
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
ui->label_info->clear();
|
|
|
|
|
break;
|
2025-03-04 09:44:03 +08:00
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void RenameModel::onCancelClicked()
|
|
|
|
|
{
|
|
|
|
|
hide();
|
|
|
|
|
ui->label_info->clear();
|
|
|
|
|
}
|
|
|
|
|
|