#include "ShowBeginExam.h" #include "MainWindow.h" ShowBeginExam::ShowBeginExam(MainWindow* mWindow) { m_mWindow = mWindow; m_replay = mWindow->getReplay(); m_ui = mWindow->getUI(); kit::setStyleComboBox(m_ui->stuBeg, 30, 240); m_items = {m_ui->item00,m_ui->item01,m_ui->item02,m_ui->item03,m_ui->item04,m_ui->item05, m_ui->item06,m_ui->item07,m_ui->item08,m_ui->item09,m_ui->item10,m_ui->item11, m_ui->item12,m_ui->item13,m_ui->item14,m_ui->item15,m_ui->item16,m_ui->item17, m_ui->item18,m_ui->item19,m_ui->item20,m_ui->item21,m_ui->item22,m_ui->item23}; } ShowBeginExam::~ShowBeginExam() { m_mWindow = nullptr; m_replay = nullptr; m_ui = nullptr; } void ShowBeginExam::updateBeginExam(const QString& info) { const TStuInfo& value = m_replay->replayStuInfo(); ShowExamEvent* examEvent = m_mWindow->getExamEvent(); logdebug("xm=%s, sfzmhm=%s", value.xm.c_str(), value.sfzmhm.c_str()); m_ui->stuBeg->clear(); TASSERT(m_ui->stuBeg->count() == 0, ""); QString ksxm = kit::toString(XParser::toAny(value.ksxm)); QString ykxm = kit::toString(XParser::toAny(value.ykxm)); QString kfxm = kit::toString(XParser::toAny(value.kfxm)); QString sczbkf = kit::toString(XParser::toAny(value.sczbkf)); m_ui->stuBeg->addItem(CL8("考试模式:") + kit::toString(value.exam)+(value.exam == examModeExam ? CL8("(考试)") : CL8("(训练)"))); m_ui->stuBeg->addItem(CL8("考官ID:") + value.kgid.c_str()); m_ui->stuBeg->addItem(CL8("考官姓名:") + value.kgxm.c_str()); //m_ui->stuBeg->addItem(CL8("考试模式:") + (value.exam == examModeExam ? CL8("考试") : CL8("训练"))); m_ui->stuBeg->addItem(CL8("是否回放:") + kit::toString(value.replay)+(value.replay == 0 ? CL8("(否)") : CL8("(是)"))); m_ui->stuBeg->addItem(CL8("轨迹文件:") + value.track.c_str()); m_ui->stuBeg->addItem(CL8("合格分数:") + kit::toString(value.passing)); m_ui->stuBeg->addItem(CL8("姓名:") + value.xm.c_str()); m_ui->stuBeg->addItem(CL8("姓别:") + kit::toString(value.sex)+(value.sex == 0 ? CL8("(女)") : CL8("(男)"))); m_ui->stuBeg->addItem(CL8("流水号:") + value.kslsh.c_str() ); m_ui->stuBeg->addItem(CL8("身份证号:") + value.sfzmhm.c_str()); m_ui->stuBeg->addItem(CL8("考试原因:") + value.ksyy.c_str()); m_ui->stuBeg->addItem(CL8("可考次数:") + kit::toString(value.kkcs)); m_ui->stuBeg->addItem(CL8("是否夜考:") + kit::toString(value.sfyk) + (value.sfyk == 0 ? CL8("(否)") : CL8("(是)"))); m_ui->stuBeg->addItem(CL8("夜考可考次数:") + kit::toString(value.ykkkcs)); m_ui->stuBeg->addItem(CL8("考试线路:") + kit::toString(value.wayno)); m_ui->stuBeg->addItem(CL8("操作类型:") + kit::toString(value.czlx)); m_ui->stuBeg->addItem(CL8("考试开始时间:") + Tools::toTimeString(value.kskssj/SECOND).c_str()); m_ui->stuBeg->addItem(CL8("考试项目:") + ksxm, JUDGE_STR(ksxm)); m_ui->stuBeg->addItem(CL8("已考项目:") + ykxm, JUDGE_STR(ykxm)); m_ui->stuBeg->addItem(CL8("断点续考:") + kit::toString(value.ddxk) + (value.ddxk == 0 ? CL8("(否)") : CL8("(是)"))); m_ui->stuBeg->addItem(CL8("断点考试时间:") + Tools::toTimeString(value.ddkssj/SECOND).c_str()); m_ui->stuBeg->addItem(CL8("扣分项目:") + kfxm, JUDGE_STR(kfxm)); m_ui->stuBeg->addItem(CL8("已考里程:") + kit::toString(value.yklc)); m_ui->stuBeg->addItem(CL8("考前绕车一周:") + kit::toString(value.sczb)+(value.sczb == 0 ? CL8("(否)") : CL8("(是)"))); m_ui->stuBeg->addItem(CL8("考前绕车一周扣分:") + sczbkf, sczbkf); m_ui->stuBeg->addItem(CL8("大车考模拟灯光标志:") + kit::toString(value.dmndg)+(value.dmndg ? CL8("(需要)") : CL8("(不需要)"))); //m_ui->stuBeg->addItem(CL8("上车准备(监管)免考:") + (value. nitem1 ? CL8("免考") : CL8("不免考"))); //m_ui->stuBeg->addItem(CL8("模拟灯光(监管)免考:") + (value. nitem41 ? CL8("免考") : CL8("不免考"))); m_ui->stuBeg->addItem(CL8("满分学习模式标志:") + kit::toString(value.mfxx)+(value.mfxx ? CL8("(是") : CL8("(否)"))); //m_ui->stuBeg->addItem(CL8("满分学习不扣分标志:") + kit::toString(value.mfxxn)+(value.mfxxn ? CL8("(不扣分") : CL8("(扣分)"))); m_ui->stuBeg->addItem(CL8("增驾模式标志:") + kit::toString(value.zeng)+(value.zeng ? CL8("(增驾") : CL8("(非增驾)"))); //ksxm ykxm kfxm for(int i = 0; i < m_items.size(); i++) { m_items[i]->setText(""); } examEvent->updateCarzt(moveUnknown); //m_ui->examEventInfo->clear(); m_ui->pe_hint->clear(); setItemProperty(0, Sub2ItemType20Comm); //ExamItemCodes codes = FactoryExamService->getExamCar()->getExamItemCodes(); //for(size_t i = 0; i < codes.size(); i++) //{ // setItemProperty(i+1, codes[i]); //} for(size_t i = 0; i < value.ksxm.size(); i++) { const TItemExam& item = value.ksxm[i]; setItemProperty(i+1, item.xmdm); } QString time = kit::toEasyTime(value.kskssj); for(size_t i = 0; i < value.ykxm.size(); i++) { int itemNo = value.ykxm[i]; updateItemProperty(itemNo, KIT_RGB_GREEN); QString event = time + CL8("[已考或免考项目]"); QString text = event + kit::getItemText(itemNo); examEvent->updateExamEvent(text, KIT_RGB_GREEN); } for(size_t i = 0; i < value.kfxm.size(); i++) { const TKfXm& kfxm = value.kfxm[i]; updateItemProperty(kfxm.xmdm, KIT_RGB_RED); QString time = kit::toEasyTime(value.kskssj); QString event = time + CL8("[开始考试带的下发扣分]"); examEvent->updateExamEvent(event + getMarkItemText(findMarkItemText(kfxm)), KIT_RGB_RED); m_replay->replayItemMarkPush(kfxm.xmdm, kfxm); //???通用项目扣分怎么知道是哪个项目扣分的? } if(value.ddxk) { } else { TASSERT(value.ddkssj == 0 && value.yklc == 0, ""); } if(value.sczb) { for(size_t i = 0; i < value.sczbkf.size(); i++) { const TKfXm& kfxm = value.sczbkf[i]; updateItemProperty(kfxm.xmdm, KIT_RGB_RED); QString time = kit::toEasyTime(value.kskssj); QString event = time + CL8("[考前绕车一周扣分]"); examEvent->updateExamEvent(event + getMarkItemText(findMarkItemText(kfxm)), KIT_RGB_RED); m_replay->replayItemMarkPush(kfxm.xmdm, kfxm); //???通用项目扣分怎么知道是哪个项目扣分的? } } else { TASSERT(value.sczbkf.empty(), ""); } } void ShowBeginExam::stuBeg_activated(int index, ShowDetail* m_detail) { if(index < 0) { return ;}; QString m = m_ui->stuBeg->currentText(); QString s = m_ui->stuBeg->currentData().toString(); QPoint pos = m_ui->stuBeg->pos(); int w = m_ui->stuBeg->width(); int h = m_ui->stuBeg->height(); pos = m_mWindow->mapToParent(QPoint(pos.x()+w, pos.y()+h*2)); //const TStuInfo& value = m_replay->replayStuInfo(); if(s == JUDGE_STR(ksxm)) { m_detail->showContent(pos, s, m); } else if(s == JUDGE_STR(ykxm)) { m_detail->showContent(pos, s, m); } else if(s == JUDGE_STR(kfxm)) { m_detail->showContent(pos, s, m); } else { m_detail->closeShow(); } } void ShowBeginExam::updateItemProperty(ExamItemCode itemNo, const QColor& color) { QTextEdit* item = findItemProperty(itemNo); if(item) { item->setTextColor(color); item->setText(item->toPlainText()); } } void ShowBeginExam::setItemProperty(int index, ExamItemCode itemNo) { TASSERT(index >= 0 && index < m_items.size(), "too few!"); QTextEdit* item = m_items[index]; TASSERT_VOID(item != nullptr, ""); if(item) { item->setTextColor(KIT_RGB_BLUE); //item->setFont(QFont(CL8("宋体"), 13)); //设置字体和字体大小 item->setFontWeight(QFont::Weight::Black); item->setAlignment(Qt::AlignCenter); item->setText(kit::itemNoToName(itemNo)); } } QTextEdit* ShowBeginExam::findItemProperty(ExamItemCode itemNo) { for(int i = 0; i < m_items.size(); i++) { QTextEdit* item = m_items[i]; if(nullptr == item) { break; } if(item->toPlainText() == kit::itemNoToName(itemNo)) { return item; } } return nullptr; } QString ShowBeginExam::getMarkItemText(const TMarkRule& mark) { std::string itemname = TableSysParm->findItemName(mark.itemno); QString text = CL8("扣分项目:%1-%2,扣分代码:%3,扣分值:%4,标准编码:%5,扣分描述:%6") .arg(mark.itemno) .arg(CU8(itemname.c_str())) .arg(CU8(mark.markserial.c_str())) .arg(mark.markreal) .arg(CU8(mark.markcatalog.c_str())) .arg(CU8(mark.markshow.c_str())) ; return text; } TMarkRule ShowBeginExam::findMarkItemText(const TKfXm& item) { const TInitInfo& value = m_replay->replayCarInitInfo(); for(size_t i = 0; i < value.mark.size(); i++) { const TMarkRule& rule = value.mark[i]; if(rule.itemno == item.xmdm && rule.markserial == item.kfdm) { return rule; } } return TMarkRule(); }