clOperation.cpp 8.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250
  1. #include "clOperation.h"
  2. #include "ui_clOperation.h"
  3. #include "CAppInfo.h"
  4. #include "logproc.h"
  5. clOperation::clOperation(const int nRow, QWidget *parent) :
  6. QWidget(parent),
  7. ui(new Ui::clOperation),
  8. m_nRow(nRow)
  9. {
  10. ui->setupUi(this);
  11. setStyleSheet(g_appInfoPtr->m_sQssStr);
  12. }
  13. clOperation::~clOperation()
  14. {
  15. delete ui;
  16. }
  17. void clOperation::setUI(const int nWidth, const int nHeight, CL_OPERATION_TYPE cot)
  18. {
  19. setGeometry(0, 0, nWidth, nHeight);
  20. ui->btn1->setGeometry(0, (nHeight - g_appInfoPtr->m_fRate*24)/2,
  21. g_appInfoPtr->m_fRate*64, g_appInfoPtr->m_fRate*24);
  22. ui->btn2->setGeometry(ui->btn1->x() + ui->btn1->width() + 10, ui->btn1->y(),
  23. ui->btn1->width(), ui->btn1->height());
  24. ui->btn3->setGeometry(ui->btn2->x() + ui->btn2->width() + 10, ui->btn1->y(),
  25. ui->btn1->width(), ui->btn1->height());
  26. ui->btn4->setGeometry(ui->btn1->x(), ui->btn1->y(), ui->btn1->width(), ui->btn1->height());
  27. if (cot == CL_OPERATION_TYPE::cot_online_practice_result)
  28. {
  29. ui->btn1->setGeometry(0, (nHeight - g_appInfoPtr->m_fRate * 24) / 2,
  30. g_appInfoPtr->m_fRate * 88, g_appInfoPtr->m_fRate * 24);
  31. }
  32. setOperationType(cot);
  33. }
  34. void clOperation::setOperationType(CL_OPERATION_TYPE cot)
  35. {
  36. ui->btn1->setVisible(true);
  37. ui->btn2->setVisible(true);
  38. ui->btn3->setVisible(true);
  39. ui->btn4->setVisible(false);
  40. m_operationType = cot;
  41. if (cot == CL_OPERATION_TYPE::cot_online_exam ||
  42. cot == CL_OPERATION_TYPE::cot_online_homework)
  43. {
  44. ui->btn3->setVisible(false);
  45. ui->btn1->setText(QString::fromLocal8Bit("进入考试"));
  46. ui->btn2->setText(QString::fromLocal8Bit("客观分"));
  47. ui->btn2->installEventFilter(this);
  48. }
  49. else if (cot == CL_OPERATION_TYPE::cot_online_finish_exam)
  50. {
  51. ui->btn2->setVisible(false);
  52. ui->btn3->setVisible(false);
  53. ui->btn1->setText(QString::fromLocal8Bit("客观分"));
  54. ui->btn1->installEventFilter(this);
  55. }
  56. else if (cot == CL_OPERATION_TYPE::cot_online_practice)
  57. {
  58. ui->btn3->setVisible(false);
  59. ui->btn1->setText(QString::fromLocal8Bit("进入练习"));
  60. ui->btn2->setText(QString::fromLocal8Bit("查看详情"));
  61. }
  62. else if (cot == CL_OPERATION_TYPE::cot_offline_init_exam)
  63. {
  64. ui->btn2->setVisible(false);
  65. ui->btn3->setVisible(false);
  66. ui->btn1->setText(QString::fromLocal8Bit("抽取试卷"));
  67. }
  68. else if (cot == CL_OPERATION_TYPE::cot_offline_exam)
  69. {
  70. ui->btn1->setText(QString::fromLocal8Bit("查看试卷"));
  71. ui->btn2->setText(QString::fromLocal8Bit("下载试卷"));
  72. ui->btn3->setText(QString::fromLocal8Bit("上传答案"));
  73. }
  74. else if (cot == CL_OPERATION_TYPE::cot_online_practice_result)
  75. {
  76. ui->btn2->setVisible(false);
  77. ui->btn3->setVisible(false);
  78. ui->btn1->setText(QString::fromLocal8Bit("查看成绩报告"));
  79. }
  80. else if(cot == CL_OPERATION_TYPE::cot_offline_status_null)
  81. {
  82. ui->btn1->setVisible(false);
  83. ui->btn2->setVisible(false);
  84. ui->btn3->setVisible(false);
  85. ui->btn4->setVisible(true);
  86. ui->btn4->setText(QString::fromLocal8Bit("未上传"));
  87. ui->btn4->setStyleSheet(QString(R"(QPushButton
  88. {
  89. outline:none;
  90. border:none;
  91. background:rgba(255,255,255,1);
  92. font-size:%1px;
  93. font-family:"Microsoft YaHei";
  94. font-weight:400;
  95. color:rgba(51, 51, 51,1);
  96. })").arg((int)(g_appInfoPtr->m_fRate*12)));
  97. }
  98. else if(cot == CL_OPERATION_TYPE::cot_offline_status_download)
  99. {
  100. ui->btn1->setVisible(false);
  101. ui->btn2->setVisible(false);
  102. ui->btn3->setVisible(false);
  103. ui->btn4->setVisible(true);
  104. ui->btn4->setText(QString::fromLocal8Bit("下载作答"));
  105. ui->btn4->setStyleSheet(QString(R"(QPushButton
  106. {
  107. outline:none;
  108. border:1px solid rgba(148,219,197,1);
  109. border-radius:%2px;
  110. background:rgba(255,255,255,1);
  111. font-size:%3px;
  112. font-family:"Microsoft YaHei";
  113. font-weight:500;
  114. color:rgba(19, 186, 140,1);
  115. }
  116. QPushButton:hover
  117. {
  118. outline:none;
  119. border:0px solid rgba(148,219,197,1);
  120. border-radius:%4px;
  121. background:rgba(19, 187, 138,1);
  122. font-size:%5px;
  123. font-family:"Microsoft YaHei";
  124. font-weight:500;
  125. color:rgba(255,255,255,1);
  126. })")//.arg((int)(g_appInfoPtr->m_fRate*1 < 1 ? 1 : g_appInfoPtr->m_fRate*1))
  127. .arg((int)(g_appInfoPtr->m_fRate*6))
  128. .arg((int)(g_appInfoPtr->m_fRate*12))
  129. .arg((int)(g_appInfoPtr->m_fRate*6))
  130. .arg((int)(g_appInfoPtr->m_fRate*12)));
  131. }
  132. }
  133. bool clOperation::eventFilter(QObject *obj, QEvent *ev)
  134. {
  135. if(ev->type() == QEvent::Enter)
  136. {
  137. if(m_operationType == CL_OPERATION_TYPE::cot_online_exam ||
  138. m_operationType == CL_OPERATION_TYPE::cot_online_homework)
  139. {
  140. if(obj == ui->btn2)
  141. {
  142. emit showObjectiveScore(m_operationType, m_nRow);
  143. }
  144. }
  145. else if(m_operationType == CL_OPERATION_TYPE::cot_online_finish_exam)
  146. {
  147. if(obj == ui->btn1)
  148. {
  149. emit showObjectiveScore(m_operationType, m_nRow);
  150. }
  151. }
  152. }
  153. else if(ev->type() == QEvent::Leave)
  154. {
  155. if(m_operationType == CL_OPERATION_TYPE::cot_online_exam ||
  156. m_operationType == CL_OPERATION_TYPE::cot_online_homework)
  157. {
  158. if(obj == ui->btn2)
  159. {
  160. emit hideObjectiveScore(m_operationType, m_nRow);
  161. }
  162. }
  163. else if(m_operationType == CL_OPERATION_TYPE::cot_online_finish_exam)
  164. {
  165. if(obj == ui->btn1)
  166. {
  167. emit hideObjectiveScore(m_operationType, m_nRow);
  168. }
  169. }
  170. }
  171. return QWidget::eventFilter(obj, ev);
  172. }
  173. void clOperation::setBtn1Enable(bool bEnable)
  174. {
  175. if (m_operationType == CL_OPERATION_TYPE::cot_online_exam
  176. || m_operationType == CL_OPERATION_TYPE::cot_online_practice
  177. || m_operationType == CL_OPERATION_TYPE::cot_online_homework)
  178. {
  179. ui->btn1->setEnabled(bEnable);
  180. }
  181. }
  182. void clOperation::on_btn1_clicked()
  183. {
  184. if(m_operationType == CL_OPERATION_TYPE::cot_online_exam
  185. || m_operationType == CL_OPERATION_TYPE::cot_online_practice
  186. || m_operationType == CL_OPERATION_TYPE::cot_online_homework)
  187. {
  188. //进入考试
  189. enterExam(m_operationType, m_nRow);
  190. }
  191. else if(m_operationType == CL_OPERATION_TYPE::cot_online_practice_result)
  192. {
  193. emit viewPracticePaper(m_nRow);
  194. }
  195. else if(m_operationType == CL_OPERATION_TYPE::cot_offline_init_exam)
  196. {
  197. //抽取试卷
  198. emit offlineExamStart(m_nRow);
  199. }
  200. else if(m_operationType == CL_OPERATION_TYPE::cot_offline_exam)
  201. {
  202. //离线考试查看试卷
  203. emit viewOfflinePaper(m_nRow);
  204. }
  205. }
  206. void clOperation::on_btn2_clicked()
  207. {
  208. if(m_operationType == CL_OPERATION_TYPE::cot_online_practice)
  209. {
  210. //查看详情
  211. emit viewPracticeDetail(m_nRow);
  212. }
  213. else if(m_operationType == CL_OPERATION_TYPE::cot_offline_exam)
  214. {
  215. //下载离线考试试卷
  216. emit downloadOfflinePaper(m_nRow);
  217. }
  218. }
  219. void clOperation::on_btn3_clicked()
  220. {
  221. if(m_operationType == CL_OPERATION_TYPE::cot_offline_exam)
  222. {
  223. //上传离线考试答案
  224. emit uploadOfflineAnswer(m_nRow);
  225. }
  226. }
  227. void clOperation::on_btn4_clicked()
  228. {
  229. if(m_operationType == CL_OPERATION_TYPE::cot_offline_status_download)
  230. {
  231. //离线考试查看试卷
  232. emit downloadOfflineAnswer(m_nRow);
  233. }
  234. }