savetotemplate.cpp 6.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244
  1. #include "savetotemplate.h"
  2. #include "ui_savetotemplate.h"
  3. #include <QStyle>
  4. #include <QFile>
  5. #include <QPainter>
  6. #include <QMouseEvent>
  7. // #include "lhstylemanager.h"
  8. #include "LHQLogAPI.h"
  9. #include "OneShadowEffect.h"
  10. SaveToTemplate::SaveToTemplate(QWidget *parent) :
  11. QDialog(parent),
  12. ui(new Ui::SaveToTemplate)
  13. {
  14. ui->setupUi(this);
  15. /* 设置隐藏边框 */
  16. this->setWindowFlags(Qt::Dialog | Qt::FramelessWindowHint);
  17. /* 设置底层样式表 */
  18. this->setAttribute(Qt::WA_TranslucentBackground);
  19. /* 加载样式表 */
  20. // QFile file(":/QSS/QSS/savetotemplate_light.qss");
  21. // if(file.open(QFile::ReadOnly))
  22. // {
  23. // QString styleSheet = file.readAll();
  24. // this->setStyleSheet(styleSheet);
  25. // file.close();
  26. // }
  27. /* 创建阴影,这里大小使用最外面的大小减去阴影宽度 */
  28. QSize size = this->size();
  29. size.setWidth(size.width() - 32);
  30. size.setHeight(size.height() - 32);
  31. // m_shadow = new OneShadow(size, 16);
  32. auto pShadow = new OneShadowEffect(this);
  33. this->setGraphicsEffect(pShadow);
  34. m_templateNameList.clear();
  35. ui->label_warn->hide();
  36. /* 限制字数类型 */
  37. ui->lineEdit->setMaxLength(15);
  38. connect(ui->pBtn_close,SIGNAL(clicked()),this,SLOT(close()));
  39. connect(ui->pBtn_cancel,SIGNAL(clicked()),this,SLOT(close()));
  40. connect(ui->pBtn_ok,SIGNAL(clicked()),this,SLOT(do_ok()));
  41. /* 注册事件过滤器 */
  42. ui->pBtn_close->installEventFilter(this);
  43. }
  44. SaveToTemplate::~SaveToTemplate()
  45. {
  46. delete ui;
  47. }
  48. /* 设置周几 */
  49. void SaveToTemplate::setWeekDay(int weekDay)
  50. {
  51. m_weekDay = weekDay;
  52. }
  53. /* 传入计划项是否为空 */
  54. void SaveToTemplate::setItemEmpty(bool flag)
  55. {
  56. m_itemEmpty = flag;
  57. }
  58. /* 传入所有的模板名称,会进行判断,只传入相同类型的模板名称 */
  59. void SaveToTemplate::setTemplateName(const QMap<QString, int> list, int type)
  60. {
  61. // m_templateNameList.clear();
  62. // for(auto begin = list.begin(); begin != list.end(); begin++)
  63. // {
  64. // if(begin.value() != type)
  65. // {
  66. // continue;
  67. // }
  68. // m_templateNameList.insert(begin.key(), begin.value());
  69. // }
  70. m_templateNameList = list;
  71. // for(auto begin = m_templateNameList.begin(), end = m_templateNameList.end(); begin != end; ++begin)
  72. // {
  73. // LH_WRITE_LOG_DEBUG(QString("模板名称:%1, 类型:%2").arg(begin.key()).arg(begin.value()));
  74. // }
  75. }
  76. /* 获取模板名称 */
  77. QString SaveToTemplate::getTemplateName()
  78. {
  79. return m_templateName;
  80. }
  81. /* 设置QSS */
  82. void SaveToTemplate::setQSS(QString qssPath)
  83. {
  84. QString qssFile = qssPath + "/savetotemplate.qss";
  85. QFile file(qssFile);
  86. if(file.open(QIODevice::ReadOnly))
  87. {
  88. QString stylesheet = file.readAll();
  89. this->setStyleSheet(stylesheet);
  90. file.close();
  91. } else
  92. {
  93. LH_WRITE_ERROR(QString("打开文件失败:%1").arg(file.fileName()));
  94. }
  95. }
  96. void SaveToTemplate::do_ok()
  97. {
  98. m_isOk = false;
  99. m_templateName.clear();
  100. ui->label_warn->hide();
  101. setWarning(false);
  102. /* 检查这一页的项是否为空 */
  103. if(m_itemEmpty)
  104. {
  105. ui->label_warn->setText("当前页没有计划项!");
  106. ui->label_warn->show();
  107. setWarning(true);
  108. return;
  109. }
  110. /* 检查名称是否是空的 */
  111. m_templateName = ui->lineEdit->text();
  112. if(m_templateName.isEmpty())
  113. {
  114. ui->label_warn->setText("请输入模版名称!");
  115. ui->label_warn->show();
  116. setWarning(true);
  117. return;
  118. }
  119. /* 检查模板名称是否重复 */
  120. bool flag = false;
  121. for(auto begin = m_templateNameList.begin(), end = m_templateNameList.end(); begin != end; ++begin)
  122. {
  123. if(begin.key() == m_templateName)
  124. {
  125. flag = true;
  126. break;
  127. }
  128. }
  129. if(flag)
  130. {
  131. ui->label_warn->setText("模版名称重复!");
  132. ui->label_warn->show();
  133. setWarning(true);
  134. return;
  135. }
  136. m_isOk = true;
  137. emit signal_templateName(m_templateName);
  138. this->close();
  139. }
  140. /* 设置报警 */
  141. void SaveToTemplate::setWarning(bool flag)
  142. {
  143. if(flag)
  144. {
  145. ui->lineEdit->setProperty("Warn", true);
  146. }else
  147. {
  148. ui->lineEdit->setProperty("Warn", false);
  149. }
  150. ui->lineEdit->style()->unpolish(ui->lineEdit);
  151. ui->lineEdit->style()->polish(ui->lineEdit);
  152. }
  153. /* 绘画事件 */
  154. // void SaveToTemplate::paintEvent(QPaintEvent *event)
  155. // {
  156. // QPainter painter(this);
  157. // painter.setRenderHint(QPainter::Antialiasing);
  158. // painter.drawImage(QPoint(0, 0), m_shadow->image());
  159. // }
  160. bool SaveToTemplate::eventFilter(QObject *watched, QEvent *event)
  161. {
  162. if(watched == ui->pBtn_close)
  163. {
  164. if(event->type() == QEvent::Enter)
  165. {
  166. ui->pBtn_close->setProperty("Hover", true);
  167. ui->pBtn_close->style()->unpolish(ui->pBtn_close);
  168. ui->pBtn_close->style()->polish(ui->pBtn_close);
  169. return true;
  170. }else if(event->type() == QEvent::Leave)
  171. {
  172. ui->pBtn_close->setProperty("Hover", false);
  173. ui->pBtn_close->style()->unpolish(ui->pBtn_close);
  174. ui->pBtn_close->style()->polish(ui->pBtn_close);
  175. return true;
  176. }
  177. }
  178. return QWidget::eventFilter(watched,event);
  179. }
  180. /* 鼠标点击事件 */
  181. void SaveToTemplate::mousePressEvent(QMouseEvent *event)
  182. {
  183. m_lastPos = event->globalPos();
  184. event->accept();
  185. }
  186. /* 鼠标移动事件 */
  187. void SaveToTemplate::mouseMoveEvent(QMouseEvent *event)
  188. {
  189. // QRect rect = this->geometry();
  190. // rect.setBottom(rect.top()+50);
  191. auto point = ui->widget_Top->mapToGlobal(QPoint(0, 0));
  192. QRect rect(point, ui->widget_Top->size());
  193. if(!rect.contains(m_lastPos))
  194. {
  195. event->accept();
  196. return;
  197. }
  198. int dx = event->globalX() - m_lastPos.x();
  199. int dy = event->globalY() - m_lastPos.y();
  200. move(x()+dx, y()+dy);
  201. m_lastPos = event->globalPos();
  202. event->accept();
  203. }
  204. /* 鼠标释放事件 */
  205. void SaveToTemplate::mouseReleaseEvent(QMouseEvent *event)
  206. {
  207. event->accept();
  208. }