#include "savetotemplate.h" #include "ui_savetotemplate.h" #include #include #include #include "lhstylemanager.h" #include "LHQLogAPI.h" #include "oneshadow.h" SaveToTemplate::SaveToTemplate(QWidget *parent) : QDialog(parent), ui(new Ui::SaveToTemplate) { ui->setupUi(this); /* 设置隐藏边框 */ this->setWindowFlags(Qt::Dialog | Qt::FramelessWindowHint); /* 设置底层样式表 */ this->setAttribute(Qt::WA_TranslucentBackground); /* 加载样式表 */ // QFile file(":/QSS/QSS/savetotemplate_light.qss"); // if(file.open(QFile::ReadOnly)) // { // QString styleSheet = file.readAll(); // this->setStyleSheet(styleSheet); // file.close(); // } /* 创建阴影,这里大小使用最外面的大小减去阴影宽度 */ QSize size = this->size(); size.setWidth(size.width() - 32); size.setHeight(size.height() - 32); m_shadow = new OneShadow(size, 16); m_templateNameList.clear(); ui->label_warn->hide(); /* 限制字数类型 */ ui->lineEdit->setMaxLength(15); connect(ui->pBtn_close,SIGNAL(clicked()),this,SLOT(close())); connect(ui->pBtn_cancel,SIGNAL(clicked()),this,SLOT(close())); connect(ui->pBtn_ok,SIGNAL(clicked()),this,SLOT(do_ok())); /* 注册事件过滤器 */ ui->pBtn_close->installEventFilter(this); } SaveToTemplate::~SaveToTemplate() { delete ui; } /* 设置周几 */ void SaveToTemplate::setWeekDay(int weekDay) { m_weekDay = weekDay; } /* 传入计划项是否为空 */ void SaveToTemplate::setItemEmpty(bool flag) { m_itemEmpty = flag; } /* 传入所有的模板名称 */ void SaveToTemplate::setTemplateName(const QStringList &list) { m_templateNameList = list; } /* 获取模板名称 */ QString SaveToTemplate::getTemplateName() { return m_templateName; } /* 设置QSS */ void SaveToTemplate::setQSS(QString qssPath) { QString qssFile = qssPath + "/savetotemplate.qss"; QFile file(qssFile); if(file.open(QIODevice::ReadOnly)) { QString stylesheet = file.readAll(); this->setStyleSheet(stylesheet); file.close(); } else { LH_WRITE_ERROR(QString("打开文件失败:%1").arg(file.fileName())); } } void SaveToTemplate::do_ok() { m_isOk = false; m_templateName.clear(); ui->label_warn->hide(); setWarning(false); /* 检查这一页的项是否为空 */ if(m_itemEmpty) { ui->label_warn->setText("当前页没有计划项!"); ui->label_warn->show(); setWarning(true); return; } /* 检查名称是否是空的 */ m_templateName = ui->lineEdit->text(); if(m_templateName.isEmpty()) { ui->label_warn->setText("请输入模版名称!"); ui->label_warn->show(); setWarning(true); return; } /* 检查模板名称是否重复 */ bool flag = false; for(const auto& it : m_templateNameList) { if(it == m_templateName) { flag = true; break; } } if(flag) { ui->label_warn->setText("模版名称重复!"); ui->label_warn->show(); setWarning(true); return; } m_isOk = true; emit signal_templateName(m_templateName); this->close(); } /* 设置报警 */ void SaveToTemplate::setWarning(bool flag) { if(flag) { ui->lineEdit->setProperty("Warn", true); }else { ui->lineEdit->setProperty("Warn", false); } ui->lineEdit->style()->unpolish(ui->lineEdit); ui->lineEdit->style()->polish(ui->lineEdit); } /* 绘画事件 */ void SaveToTemplate::paintEvent(QPaintEvent *event) { QPainter painter(this); painter.setRenderHint(QPainter::Antialiasing); painter.drawImage(QPoint(0, 0), m_shadow->image()); } bool SaveToTemplate::eventFilter(QObject *watched, QEvent *event) { if(watched == ui->pBtn_close) { if(event->type() == QEvent::Enter) { ui->pBtn_close->setProperty("Hover", true); ui->pBtn_close->style()->unpolish(ui->pBtn_close); ui->pBtn_close->style()->polish(ui->pBtn_close); return true; }else if(event->type() == QEvent::Leave) { ui->pBtn_close->setProperty("Hover", false); ui->pBtn_close->style()->unpolish(ui->pBtn_close); ui->pBtn_close->style()->polish(ui->pBtn_close); return true; } } return QWidget::eventFilter(watched,event); }