#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<Custom_LineEdit*>(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(max<ui->edit_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<QPushButton*>(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();
|
}
|