243 lines
9.3 KiB
C++
243 lines
9.3 KiB
C++
#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();
|
||
}
|