savetotemplate.cpp 4.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193
  1. #include "savetotemplate.h"
  2. #include "ui_savetotemplate.h"
  3. #include <QStyle>
  4. #include <QFile>
  5. #include <QPainter>
  6. // #include "lhstylemanager.h"
  7. #include "LHQLogAPI.h"
  8. #include "oneshadow.h"
  9. SaveToTemplate::SaveToTemplate(QWidget *parent) :
  10. QDialog(parent),
  11. ui(new Ui::SaveToTemplate)
  12. {
  13. ui->setupUi(this);
  14. /* 设置隐藏边框 */
  15. this->setWindowFlags(Qt::Dialog | Qt::FramelessWindowHint);
  16. /* 设置底层样式表 */
  17. this->setAttribute(Qt::WA_TranslucentBackground);
  18. /* 加载样式表 */
  19. // QFile file(":/QSS/QSS/savetotemplate_light.qss");
  20. // if(file.open(QFile::ReadOnly))
  21. // {
  22. // QString styleSheet = file.readAll();
  23. // this->setStyleSheet(styleSheet);
  24. // file.close();
  25. // }
  26. /* 创建阴影,这里大小使用最外面的大小减去阴影宽度 */
  27. QSize size = this->size();
  28. size.setWidth(size.width() - 32);
  29. size.setHeight(size.height() - 32);
  30. m_shadow = new OneShadow(size, 16);
  31. m_templateNameList.clear();
  32. ui->label_warn->hide();
  33. /* 限制字数类型 */
  34. ui->lineEdit->setMaxLength(15);
  35. connect(ui->pBtn_close,SIGNAL(clicked()),this,SLOT(close()));
  36. connect(ui->pBtn_cancel,SIGNAL(clicked()),this,SLOT(close()));
  37. connect(ui->pBtn_ok,SIGNAL(clicked()),this,SLOT(do_ok()));
  38. /* 注册事件过滤器 */
  39. ui->pBtn_close->installEventFilter(this);
  40. }
  41. SaveToTemplate::~SaveToTemplate()
  42. {
  43. delete ui;
  44. }
  45. /* 设置周几 */
  46. void SaveToTemplate::setWeekDay(int weekDay)
  47. {
  48. m_weekDay = weekDay;
  49. }
  50. /* 传入计划项是否为空 */
  51. void SaveToTemplate::setItemEmpty(bool flag)
  52. {
  53. m_itemEmpty = flag;
  54. }
  55. /* 传入所有的模板名称 */
  56. void SaveToTemplate::setTemplateName(const QStringList &list)
  57. {
  58. m_templateNameList = list;
  59. }
  60. /* 获取模板名称 */
  61. QString SaveToTemplate::getTemplateName()
  62. {
  63. return m_templateName;
  64. }
  65. /* 设置QSS */
  66. void SaveToTemplate::setQSS(QString qssPath)
  67. {
  68. QString qssFile = qssPath + "/savetotemplate.qss";
  69. QFile file(qssFile);
  70. if(file.open(QIODevice::ReadOnly))
  71. {
  72. QString stylesheet = file.readAll();
  73. this->setStyleSheet(stylesheet);
  74. file.close();
  75. } else
  76. {
  77. LH_WRITE_ERROR(QString("打开文件失败:%1").arg(file.fileName()));
  78. }
  79. }
  80. void SaveToTemplate::do_ok()
  81. {
  82. m_isOk = false;
  83. m_templateName.clear();
  84. ui->label_warn->hide();
  85. setWarning(false);
  86. /* 检查这一页的项是否为空 */
  87. if(m_itemEmpty)
  88. {
  89. ui->label_warn->setText("当前页没有计划项!");
  90. ui->label_warn->show();
  91. setWarning(true);
  92. return;
  93. }
  94. /* 检查名称是否是空的 */
  95. m_templateName = ui->lineEdit->text();
  96. if(m_templateName.isEmpty())
  97. {
  98. ui->label_warn->setText("请输入模版名称!");
  99. ui->label_warn->show();
  100. setWarning(true);
  101. return;
  102. }
  103. /* 检查模板名称是否重复 */
  104. bool flag = false;
  105. for(const auto& it : m_templateNameList)
  106. {
  107. if(it == m_templateName)
  108. {
  109. flag = true;
  110. break;
  111. }
  112. }
  113. if(flag)
  114. {
  115. ui->label_warn->setText("模版名称重复!");
  116. ui->label_warn->show();
  117. setWarning(true);
  118. return;
  119. }
  120. m_isOk = true;
  121. emit signal_templateName(m_templateName);
  122. this->close();
  123. }
  124. /* 设置报警 */
  125. void SaveToTemplate::setWarning(bool flag)
  126. {
  127. if(flag)
  128. {
  129. ui->lineEdit->setProperty("Warn", true);
  130. }else
  131. {
  132. ui->lineEdit->setProperty("Warn", false);
  133. }
  134. ui->lineEdit->style()->unpolish(ui->lineEdit);
  135. ui->lineEdit->style()->polish(ui->lineEdit);
  136. }
  137. /* 绘画事件 */
  138. void SaveToTemplate::paintEvent(QPaintEvent *event)
  139. {
  140. QPainter painter(this);
  141. painter.setRenderHint(QPainter::Antialiasing);
  142. painter.drawImage(QPoint(0, 0), m_shadow->image());
  143. }
  144. bool SaveToTemplate::eventFilter(QObject *watched, QEvent *event)
  145. {
  146. if(watched == ui->pBtn_close)
  147. {
  148. if(event->type() == QEvent::Enter)
  149. {
  150. ui->pBtn_close->setProperty("Hover", true);
  151. ui->pBtn_close->style()->unpolish(ui->pBtn_close);
  152. ui->pBtn_close->style()->polish(ui->pBtn_close);
  153. return true;
  154. }else if(event->type() == QEvent::Leave)
  155. {
  156. ui->pBtn_close->setProperty("Hover", false);
  157. ui->pBtn_close->style()->unpolish(ui->pBtn_close);
  158. ui->pBtn_close->style()->polish(ui->pBtn_close);
  159. return true;
  160. }
  161. }
  162. return QWidget::eventFilter(watched,event);
  163. }