#include "new_page.h" #include "ui_new_page.h" New_Page::New_Page(QWidget *parent, Work_Thread *thread) : customDialog(parent), ui(new Ui::New_Page) { ui->setupUi(this); work_thread = thread; set_btn_beep(ui->edit_BatteryName,SIGNAL(custom_click())); set_btn_beep(ui->edit_MonVol,SIGNAL(custom_click())); set_btn_beep(ui->edit_NominalCap,SIGNAL(custom_click())); set_btn_beep(ui->edit_MonNum,SIGNAL(custom_click())); set_btn_beep(ui->edit_GroupNum,SIGNAL(custom_click())); set_btn_beep(ui->edit_PresetCur,SIGNAL(custom_click())); set_btn_beep(ui->edit_GroupLow,SIGNAL(custom_click())); set_btn_beep(ui->edit_MonLow,SIGNAL(custom_click())); set_btn_beep(ui->edit_LowNum,SIGNAL(custom_click())); set_btn_beep(ui->edit_PresetCap,SIGNAL(custom_click())); set_btn_beep(ui->edit_PresetTime,SIGNAL(custom_click())); set_btn_beep(ui->edit_HourRate,SIGNAL(custom_click())); set_btn_beep(ui->edit_reserve_1,SIGNAL(custom_click())); set_btn_beep(ui->edit_reserve_2,SIGNAL(custom_click())); set_btn_beep(ui->edit_reserve_3,SIGNAL(custom_click())); set_btn_beep(ui->pushButton_OK,SIGNAL(pressed())); set_btn_beep(ui->pushButton_Return,SIGNAL(pressed())); connect(ui->edit_BatteryName,SIGNAL(custom_click()),this,SLOT(CustomEditSlot())); connect(ui->edit_MonVol,SIGNAL(custom_click()),this,SLOT(CustomEditSlot())); connect(ui->edit_NominalCap,SIGNAL(custom_click()),this,SLOT(CustomEditSlot())); connect(ui->edit_MonNum,SIGNAL(custom_click()),this,SLOT(CustomEditSlot())); connect(ui->edit_GroupNum,SIGNAL(custom_click()),this,SLOT(CustomEditSlot())); connect(ui->edit_PresetCur,SIGNAL(custom_click()),this,SLOT(CustomEditSlot())); connect(ui->edit_GroupLow,SIGNAL(custom_click()),this,SLOT(CustomEditSlot())); connect(ui->edit_MonLow,SIGNAL(custom_click()),this,SLOT(CustomEditSlot())); connect(ui->edit_LowNum,SIGNAL(custom_click()),this,SLOT(CustomEditSlot())); connect(ui->edit_PresetCap,SIGNAL(custom_click()),this,SLOT(CustomEditSlot())); connect(ui->edit_PresetTime,SIGNAL(custom_click()),this,SLOT(CustomEditSlot())); connect(ui->edit_HourRate,SIGNAL(custom_click()),this,SLOT(CustomEditSlot())); connect(ui->edit_reserve_1,SIGNAL(custom_click()),this,SLOT(CustomEditSlot())); connect(ui->edit_reserve_2,SIGNAL(custom_click()),this,SLOT(CustomEditSlot())); connect(ui->edit_reserve_3,SIGNAL(custom_click()),this,SLOT(CustomEditSlot())); connect(ui->pushButton_OK,SIGNAL(released()),this,SLOT(NewBtnSlot())); connect(ui->pushButton_Return,SIGNAL(released()),this,SLOT(NewBtnSlot())); initpage(); ui->edit_reserve_1->setVisible(false); ui->edit_reserve_2->setVisible(false); ui->edit_reserve_3->setVisible(false); ui->label_reserve_1->setVisible(false); ui->label_reserve_2->setVisible(false); ui->label_reserve_3->setVisible(false); ui->label_reserve_4->setVisible(false); ui->label_reserve_5->setVisible(false); ui->label_reserve_6->setVisible(false); if(PageType == FBO48CT){ ui->edit_reserve_1->setVisible(true); ui->label_reserve_1->setVisible(true); ui->label_reserve_2->setVisible(true); ui->label_reserve_1->setText(tr("在线阈值")); } else if(PageType == FBI48CT){ ui->edit_reserve_1->setVisible(true); ui->label_reserve_1->setVisible(true); ui->label_reserve_2->setVisible(true); ui->label_reserve_1->setText(tr("升压上限")); ui->edit_reserve_2->setVisible(true); ui->label_reserve_3->setVisible(true); ui->label_reserve_4->setVisible(true); //ui->label_reserve_2->setText(tr("在线阈值")); ui->edit_reserve_3->setVisible(true); ui->label_reserve_5->setVisible(true); ui->label_reserve_6->setVisible(true); ui->label_reserve_5->setText(tr("充电限流")); } } New_Page::~New_Page() { delete ui; } void New_Page::initpage(){ TEST_PARAM_XML testParam; if(ClassXML::ReadTestParamXml(Default_Battery, testParam)) { ui->edit_HourRate->setText(QString::number(testParam.hourly_rate)); ui->edit_MonVol->setText(QString::number((double)testParam.mon_vol/10,'f',1)); ui->edit_NominalCap->setText(QString::number(testParam.nominal_cap)); ui->edit_MonNum->setText(QString::number(testParam.mon_number)); ui->edit_GroupNum->setText(QString::number(testParam.group_number)); ui->edit_PresetCur->setText(QString::number((float)testParam.preset_cur/10,'f',1)); ui->edit_GroupLow->setText(QString::number((float)testParam.group_lower/10,'f',1)); ui->edit_MonLow->setText(QString::number((float)testParam.mon_lower/100,'f',2)); if(PageType == FBI48CT) ui->edit_reserve_1->setText(QString::number((float)testParam.booster_ceiling/10,'f',1));//升压上限 else ui->edit_reserve_1->setText(QString::number((float)testParam.onlinevol_lowlimit/10,'f',1));//在线阈值 if(TYPE_FBI_10480 || TYPE_FBI_4548 || TYPE_FBI_20240){ ui->edit_reserve_2->setText(QString::number((float)testParam.onlinevol_lowlimit/10,'f',1));//在线阈值 ui->edit_reserve_3->setText(QString::number((float)testParam.charge_limit/10,'f',1));//充电限流 } if(testParam.lower_number > testParam.group_number * testParam.mon_number) { testParam.lower_number = testParam.group_number * testParam.mon_number; ui->edit_LowNum->setText(QString::number(testParam.lower_number)); } else { ui->edit_LowNum->setText(QString::number(testParam.lower_number)); } ui->edit_PresetCap->setText(QString::number(testParam.preset_cap)); } #if(TYPE_IDCE_1230) ui->edit_MonNum->setText("54"); ui->edit_GroupLow->setText("111"); #endif } void New_Page::CustomEditSlot() { Custom_LineEdit *le = dynamic_cast(sender()); if(ui->edit_BatteryName == le) { le->setStyleSheet("color:red"); SyszuxPinyin pinyin(this,le,work_thread); pinyin.exec(); le->setStyleSheet("color:black"); } else if(ui->edit_MonVol == le) { if(le->text() == "2") { le->setText("4"); } else if(le->text() == "4") { le->setText("6"); } else if(le->text() == "6") { le->setText("12"); } #if TYPE_IDCE_940 else if(le->text() == "12") { le->setText("1.2"); } #endif else { le->setText("2"); } } else if(ui->edit_NominalCap == le) { if(setEditInput(le,0,0,9999,0,INPUT_ALLNO)) { int cap = ui->edit_NominalCap->text().toInt(); int hourRate = ui->edit_HourRate->text().toInt(); int cur = ClassXML::GetFDCurrent(cap,hourRate); ui->edit_PresetCur->setText(QString::number((float)cur/10,'f',1)); } } else if(ui->edit_MonNum == le) { int max = 300/ui->edit_GroupNum->text().toInt(); setEditInput(le,0,MONOMER_NUM_MIN,max,0,INPUT_ALLNO); if((ui->edit_GroupNum->text().toInt() * ui->edit_MonNum->text().toInt()) < ui->edit_LowNum->text().toInt()) { ui->edit_LowNum->setText(QString::number(ui->edit_GroupNum->text().toInt() * ui->edit_MonNum->text().toInt())); } } else if(ui->edit_GroupNum == le) { if(setEditInput(le,0,1,4,0,INPUT_ALLNO)) { int max = 300/le->text().toInt(); if(maxedit_MonNum->text().toInt()) { ui->edit_MonNum->setText(QString::number(max)); } } if((ui->edit_GroupNum->text().toInt() * ui->edit_MonNum->text().toInt()) < ui->edit_LowNum->text().toInt()) { ui->edit_LowNum->setText(QString::number(ui->edit_GroupNum->text().toInt() * ui->edit_MonNum->text().toInt())); } } else if(ui->edit_PresetCur == le) { if(setEditInput(le,0,(double)MinCur/10,999.9,1,INPUT_DATA)) { int cap = ui->edit_NominalCap->text().toInt(); int cur = ui->edit_PresetCur->text().toFloat(); int hourRate = ClassXML::GetHourRate(cap,cur); ui->edit_HourRate->setText(QString::number(hourRate)); } } else if(ui->edit_GroupLow == le) { setEditInput(le,1,0,999.9,1,INPUT_DATA); } else if(ui->edit_MonLow == le) { setEditInput(le,1,0,MONUPLIMIT,2,INPUT_DATA); } else if(ui->edit_LowNum == le) { int max = ui->edit_GroupNum->text().toInt() * ui->edit_MonNum->text().toInt(); if(max > 300) { max = 300; } setEditInput(le,1,MONOMER_NUM_MIN,max,0,INPUT_ALLNO); } else if(ui->edit_PresetTime == le) { setTimeInput(le,1); // setTimeInput(le, 1, &test_param_xml.preset_time); } else if(ui->edit_PresetCap == le) { setEditInput(le,1,1,9999,0,INPUT_ALLNO); } else if(ui->edit_reserve_1 == le) { setEditInput(le,1,0,999.9,1,INPUT_DATA); } else if(ui->edit_reserve_2 == le) { setEditInput(le,1,0,999.9,1,INPUT_DATA); } else if(ui->edit_reserve_3 == le) { setEditInput(le,1,0,100,1,INPUT_DATA); } else if(ui->edit_HourRate == le) { if(setEditInput(le,0,1,20,0,INPUT_ALLNO)) { int cap = ui->edit_NominalCap->text().toInt(); int hourRate = ui->edit_HourRate->text().toInt(); int cur = ClassXML::GetFDCurrent(cap,hourRate); ui->edit_PresetCur->setText(QString::number((float)cur/10,'f',1)); } } } void New_Page::NewBtnSlot() { QPushButton *pb = dynamic_cast(sender()); if(ui->pushButton_Return == pb) { closeCustom(false); } else if(ui->pushButton_OK == pb) { setBatteryInfo(); } } bool New_Page::setEditInput(Custom_LineEdit *edit, int space, float min, float max, int floatNum,int type) { edit->setStyleSheet("color:red"); KeyBoard_Num keyboard(this,type,work_thread); if(space) keyboard.setGeometry(150,105,300,350); else keyboard.setGeometry(310,105,300,350); keyboard.execKeyboard(); edit->setStyleSheet("color:black"); DATA_KB_RTN kbdata = keyboard.get_kb_data(); if(kbdata.If_OK) { float input = kbdata.set_text.toFloat(); if(input>=min && input<=max) { edit->setText(QString::number(input,'f',floatNum)); } } return kbdata.If_OK; } void New_Page::setTimeInput(Custom_LineEdit *edit, int space) { edit->setStyleSheet("color:red"); KeyBoard_Num keyboard(this,INPUT_TIME,work_thread); if(space) keyboard.setGeometry(175,105,300,350); else keyboard.setGeometry(290,105,300,350); keyboard.execKeyboard(); edit->setStyleSheet("color:black"); DATA_KB_RTN kbdata = keyboard.get_kb_data(); if(kbdata.If_OK) { QString data = kbdata.set_text; if(checkTimeText(data)) { edit->setText(QString("%1:%2") .arg(data.section(":",0,0).trimmed(). toInt(),2,10,QChar('0')) .arg(data.section(":",1,1).trimmed(). toInt(),2,10,QChar('0'))); edit->setText(QString("%1:%2") .arg(data.section(":",0,0).trimmed(). toInt(),2,10,QChar('0')) .arg(data.section(":",1,1).trimmed(). toInt(),2,10,QChar('0'))); } } } /* void New_Page::setTimeInput(Custom_LineEdit *edit, int pos, quint16 *param_data) { QString origcolor = edit->styleSheet(); edit->setStyleSheet("color:red"); KeyBoard_Num keyboard(this); if(0 == pos) keyboard.setGeometry(240,105,300,350); else keyboard.setGeometry(340,105,300,350); keyboard.execKeyboard(); DATA_KB_RTN kbdata = keyboard.get_kb_data(); if(kbdata.If_OK) { QString data = kbdata.set_text; if(checkTimeText(data)) { edit->setText(QString("%1:%2") .arg(data.section(":",0,0).trimmed(). toInt(),2,10,QChar('0')) .arg(data.section(":",1,1).trimmed(). toInt(),2,10,QChar('0'))); int hh = data.section(":",0,0).toInt(); int mm = data.section(":",1,1).toInt(); *param_data = hh*60+mm; // paramEdited = true; } else edit->setStyleSheet(origcolor); } else edit->setStyleSheet(origcolor); } */ bool New_Page::checkTimeText(QString time) { if(time.length()<3) return false; if(time.contains(QRegExp("[.-]"))) return false; QString hour = time.section(":",0,0).trimmed(); QString minute = time.section(":",1,1).trimmed(); int ih = hour.toInt(); int im = minute.toInt(); if(ih<0 || ih>99) return false; if(im<0 || im>59) return false; if((im == 0) && (ih == 0)) return false; return true; } void New_Page::setBatteryInfo() { //memcpy(&test_param_xml,0,sizeof(test_param_xml)); batteryName = ui->edit_BatteryName->text(); if(PageType == FBI48CT) test_param_xml.test_mode = ONline_working; else test_param_xml.test_mode = OFFline_working; test_param_xml.acstop_op = ACOFF_STOP; test_param_xml.nominal_cap = ui->edit_NominalCap->text().toInt(); test_param_xml.hourly_rate = ui->edit_HourRate->text().toInt(); test_param_xml.preset_cur = ui->edit_PresetCur->text().toDouble()*10+0.5; test_param_xml.preset_cap = ui->edit_PresetCap->text().toInt(); int hour = ui->edit_PresetTime->text().section(":",0,0).toInt(); int minute = ui->edit_PresetTime->text().section(":",1,1).toInt(); test_param_xml.preset_time = hour*60+minute; test_param_xml.mon_lower = ui->edit_MonLow->text().toDouble()*100+0.5; test_param_xml.group_lower = ui->edit_GroupLow->text().toDouble()*10+0.5; test_param_xml.mon_number = ui->edit_MonNum->text().toInt(); test_param_xml.group_number = ui->edit_GroupNum->text().toInt(); test_param_xml.lower_number = ui->edit_LowNum->text().toInt(); test_param_xml.mon_vol = ui->edit_MonVol->text().toFloat()*10+0.5; test_param_xml.booster_ceiling = 0; test_param_xml.charge_limit = 0; test_param_xml.temp_High = 0; test_param_xml.discharge_mode = DISCHARGE_CURRENT; test_param_xml.preset_power = MinPower; if(PageType == FBI48CT){ test_param_xml.booster_ceiling = ui->edit_reserve_1->text().toDouble()*10+0.5; test_param_xml.onlinevol_lowlimit = onlinevollow; test_param_xml.charge_limit = 100; } else { test_param_xml.onlinevol_lowlimit = ui->edit_reserve_1->text().toDouble()*10+0.5; test_param_xml.booster_ceiling = 552; test_param_xml.charge_limit = 100; } if(TYPE_FBI_10480 || TYPE_FBI_4548 || TYPE_FBI_20240){ test_param_xml.onlinevol_lowlimit = ui->edit_reserve_2->text().toDouble()*10+0.5; test_param_xml.charge_limit = ui->edit_reserve_3->text().toDouble()*10+0.5; } if(ClassXML::CreateTestParamXml(batteryName,test_param_xml)) { /*float vol = test_param_xml.mon_vol*test_param_xml.mon_number*test_param_xml.group_number; float cap = test_param_xml.nominal_cap; int num = test_param_xml.mon_number; int groupnum = test_param_xml.group_number; //-------数据库键表--------- Sqlite_Driver* sd = new Sqlite_Driver(); QString sql = "insert into tb_battinf(batt_name,batt_stdvol,batt_stdcap,mon_number,group_number)values('"+ batteryName+"',"+QString::number(vol,'f',1)+","+ QString::number(cap)+","+QString::number(num)+","+ QString::number(groupnum)+")"; sd->execSqlite(sql);*/ closeCustom(false); } else popBox(tr("创建失败")); } //************告警窗口*****************// void New_Page::popBox(QString msg) { MessageBox box( this, QMessageBox::Warning, MB_Caption, msg, QMessageBox::Ok,QMessageBox::Ok,work_thread); box.exec(); }