#include "choose_page.h" #include "ui_choose_page.h" Choose_Page::Choose_Page(QWidget *parent,Work_Thread *thread) : customDialog(parent), ui(new Ui::Choose_Page) { ui->setupUi(this); work_thread = thread; connect(work_thread,SIGNAL(SentInterface(int)),this,SLOT(UpdateInterface(int))); work_thread->localData.Interface = FACE_CHOOSE; set_btn_beep(ui->list_Battery0,SIGNAL(pressed())); set_btn_beep(ui->list_Battery1,SIGNAL(pressed())); set_btn_beep(ui->list_Battery2,SIGNAL(pressed())); set_btn_beep(ui->list_Battery3,SIGNAL(pressed())); set_btn_beep(ui->list_Battery4,SIGNAL(pressed())); set_btn_beep(ui->list_Battery5,SIGNAL(pressed())); set_btn_beep(ui->list_Battery6,SIGNAL(pressed())); set_btn_beep(ui->list_Battery7,SIGNAL(pressed())); 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->pushButton_NewPage,SIGNAL(pressed())); set_btn_beep(ui->pushButton_WorkingPage,SIGNAL(pressed())); set_btn_beep(ui->pushButton_Exit,SIGNAL(pressed())); set_btn_beep(ui->pushButton_Last,SIGNAL(pressed())); set_btn_beep(ui->pushButton_Next,SIGNAL(pressed())); connect(ui->list_Battery0,SIGNAL(pressed()),this,SLOT(ChooseBatterySlot())); connect(ui->list_Battery1,SIGNAL(pressed()),this,SLOT(ChooseBatterySlot())); connect(ui->list_Battery2,SIGNAL(pressed()),this,SLOT(ChooseBatterySlot())); connect(ui->list_Battery3,SIGNAL(pressed()),this,SLOT(ChooseBatterySlot())); connect(ui->list_Battery4,SIGNAL(pressed()),this,SLOT(ChooseBatterySlot())); connect(ui->list_Battery5,SIGNAL(pressed()),this,SLOT(ChooseBatterySlot())); connect(ui->list_Battery6,SIGNAL(pressed()),this,SLOT(ChooseBatterySlot())); connect(ui->list_Battery7,SIGNAL(pressed()),this,SLOT(ChooseBatterySlot())); 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->pushButton_NewPage,SIGNAL(released()),this,SLOT(ChooseBtnSlot())); connect(ui->pushButton_WorkingPage,SIGNAL(released()),this,SLOT(ChooseBtnSlot())); connect(ui->pushButton_Exit,SIGNAL(released()),this,SLOT(ChooseBtnSlot())); connect(ui->pushButton_Last,SIGNAL(released()),this,SLOT(ChooseBtnSlot())); connect(ui->pushButton_Next,SIGNAL(released()),this,SLOT(ChooseBtnSlot())); one_sub_window_exist = false; //更新时间和图标 IconTimeSlot(); getDataTimer = new QTimer(this); connect(getDataTimer,SIGNAL(timeout()),this,SLOT(IconTimeSlot())); getDataTimer->start(500); initListBattery(); updateChoosePage(); } Choose_Page::~Choose_Page() { work_thread->localData.Interface = FACE_HOME; delete ui; } void Choose_Page::IconTimeSlot() { QDateTime time = QDateTime::currentDateTime();//获取系统现在的时间 QString str = time.toString("yyyy-MM-dd hh:mm:ss"); //设置显示格式 ui->label_Time->setText(str); if(work_thread->iconState.monomerState){ if(work_thread->get_mon_source()==MONO_TYPE_WIRED) { ui->label_MON->setStyleSheet("image: url(:/new/prefix1/1.png);"); } else { if(mon_use_type == 2) ui->label_MON->setStyleSheet("border-image: url(:/new/prefix1/lora_mon.png);"); else ui->label_MON->setStyleSheet("border-image: url(:/new/prefix1/mon.png);"); } } else ui->label_MON->setStyleSheet(""); if(work_thread->iconState.usbState) ui->label_USB->setPixmap(QPixmap(":new/prefix1/usb.png")); else ui->label_USB->setPixmap(QPixmap("")); if(work_thread->iconState.wifiState) ui->label_WIFI->setStyleSheet("border-image: url(:/new/prefix1/wificonnect.png);"); else ui->label_WIFI->setStyleSheet(""); } void Choose_Page::ChooseBatterySlot() { QPushButton *pb = dynamic_cast(sender()); initBatteryBtn(); setBatteryBtnColor(pb); setBatteryInfo(pb->text()); batteryName = pb->text();//fileDir+pb->text()+"/" if(ui->list_Battery0 == pb) { ui->edit_MonVol->resize(QSize(80,45)); ui->edit_NomiNalCap->resize(QSize(80,45)); ui->edit_MonNum->resize(QSize(80,45)); ui->edit_GroupNum->resize(QSize(80,45)); } else { ui->edit_MonVol->resize(QSize(0,0)); ui->edit_NomiNalCap->resize(QSize(0,0)); ui->edit_MonNum->resize(QSize(0,0)); ui->edit_GroupNum->resize(QSize(0,0)); } } void Choose_Page::ChooseBtnSlot() { QPushButton *pb = dynamic_cast(sender()); initBatteryBtn(); if(ui->pushButton_NewPage == pb) { if(true == one_sub_window_exist) { return; } work_thread->localData.Interface = FACE_NEWPAGE; new_page = new New_Page(this,work_thread); one_sub_window_exist = true; new_page->execCustom(); updateChoosePage(); one_sub_window_exist = false; work_thread->localData.Interface = FACE_CHOOSE; } else if(ui->pushButton_WorkingPage == pb) { if(true == one_sub_window_exist) { return; } this->close(); ClassXML::ModifyNewestPNameXml(batteryName); work_thread->openWorkPage = true; } else if(ui->pushButton_Exit == pb) { closeCustom(false); } else if(ui->pushButton_Last == pb) { currentPageIndex--; for(int i=0;isetEnabled(true); listBattery[i]->setText(batteryList.at(currentPageIndex*BatteryNumEachPage+i)); listBattery[i]->setIcon(QIcon(":new/prefix1/to.png")); } ui->pushButton_Next->setEnabled(true); if(currentPageIndex == 0) ui->pushButton_Last->setEnabled(false); ui->label_PageNum->setText(QString::number(currentPageIndex+1) +" / "+QString::number(pageNum)+tr(" 页")); } else if(ui->pushButton_Next == pb) { currentPageIndex++; int batteryNumOnCurrentPage; if(batteryNum>(currentPageIndex+1)*BatteryNumEachPage) { batteryNumOnCurrentPage = BatteryNumEachPage; ui->pushButton_Next->setEnabled(true); } else { batteryNumOnCurrentPage = batteryNum-currentPageIndex*BatteryNumEachPage; ui->pushButton_Next->setEnabled(false); } for(int i=0;isetEnabled(false); listBattery[i]->setText(""); listBattery[i]->setIcon(QIcon("")); } for(int i=0;isetEnabled(true); listBattery[i]->setText(batteryList.at(currentPageIndex*BatteryNumEachPage+i)); listBattery[i]->setIcon(QIcon(":new/prefix1/to.png")); } ui->pushButton_Last->setEnabled(true); ui->label_PageNum->setText(QString::number(currentPageIndex+1) +" / "+QString::number(pageNum)+tr(" 页")); } } void Choose_Page::CustomEditSlot() { Custom_LineEdit *le = dynamic_cast(sender()); if(ui->edit_MonVol == le) { if(le->text() == "2.0") { le->setText("4.0"); } else if(le->text() == "4.0") { le->setText("6.0"); } else if(le->text() == "6.0") { le->setText("12.0"); } #if TYPE_IDCE_940 else if(le->text() == "12.0") { le->setText("1.2"); } #endif else { le->setText("2.0"); } test_param_xml.mon_vol = le->text().toFloat()*10+0.5; } else if(ui->edit_NomiNalCap == le) { if(setEditInput(le,0,0,9999,0)) { test_param_xml.nominal_cap = le->text().toInt(); } } else if(ui->edit_MonNum == le) { int max = 300/ui->edit_GroupNum->text().toInt(); if(setEditInput(le,0,MONOMER_NUM_MIN,max,0)) { test_param_xml.mon_number = le->text().toInt(); work_thread->testParam.mon_number = test_param_xml.mon_number; work_thread->fboData.BattSum = test_param_xml.mon_number * test_param_xml.group_number; } } else if(ui->edit_GroupNum == le) { if(setEditInput(le,0,1,4,0)) { test_param_xml.group_number = le->text().toInt(); int max = 300/test_param_xml.group_number; if(maxedit_MonNum->setText(QString::number(max)); test_param_xml.mon_number = max; } work_thread->testParam.group_number = test_param_xml.group_number; work_thread->fboData.BattSum = test_param_xml.mon_number * test_param_xml.group_number; } } ClassXML::ModifyTestParamXml(Default_Battery,test_param_xml); } bool Choose_Page::setEditInput(Custom_LineEdit *edit, int space, float min, float max, int floatNum) { edit->setStyleSheet("color:red"); KeyBoard_Num keyboard(this,INPUT_ALLNO,work_thread); if(space) keyboard.setGeometry(260,125,300,350); else keyboard.setGeometry(260,125,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 Choose_Page::initListBattery() { listBattery[0] = ui->list_Battery1; listBattery[1] = ui->list_Battery2; listBattery[2] = ui->list_Battery3; listBattery[3] = ui->list_Battery4; listBattery[4] = ui->list_Battery5; listBattery[5] = ui->list_Battery6; listBattery[6] = ui->list_Battery7; } void Choose_Page::initBatteryBtn() { ui->list_Battery0->setAutoFillBackground(false); ui->list_Battery1->setAutoFillBackground(false); ui->list_Battery2->setAutoFillBackground(false); ui->list_Battery3->setAutoFillBackground(false); ui->list_Battery4->setAutoFillBackground(false); ui->list_Battery5->setAutoFillBackground(false); ui->list_Battery6->setAutoFillBackground(false); ui->list_Battery7->setAutoFillBackground(false); ui->pushButton_WorkingPage->setEnabled(true); } void Choose_Page::setBatteryBtnColor(QPushButton *pushButton) { QPalette pal = pushButton->palette(); pal.setColor(QPalette::Button,QColor(0,170,0)); pushButton->setPalette(pal); pushButton->setAutoFillBackground(true); } void Choose_Page::renewErrorBatteryParam(QString batteryName) { if(PageType == FBI48CT) test_param_xml.test_mode = ONline_working; else test_param_xml.test_mode = OFFline_working; test_param_xml.acstop_op = ACOFF_CONTINUE; test_param_xml.nominal_cap = 1000; test_param_xml.hourly_rate = 10; test_param_xml.preset_cur = 100; test_param_xml.preset_cap = 1000; test_param_xml.preset_time = 600; test_param_xml.mon_vol = 20; test_param_xml.mon_lower = 180; test_param_xml.group_lower = VolTooLow; test_param_xml.mon_number = 108; test_param_xml.group_number = 1; test_param_xml.lower_number = 1; test_param_xml.onlinevol_lowlimit = onlinevollow; test_param_xml.charge_limit = 300; test_param_xml.temp_High = 500; test_param_xml.discharge_mode = 0; test_param_xml.preset_power = MinPower; ClassXML::ModifyTestParamXml(batteryName,test_param_xml); } void Choose_Page::setBatteryInfo(QString batteryName) { ui->textBrowser->setText(batteryName); if(ui->textBrowser->styleSheet().trimmed() == "color: rgb(255, 255, 0);background-color: rgb(255, 255, 255,0);"){ ui->textBrowser->setStyleSheet("color: rgb(255, 255, 0);background-color: rgb(255, 255, 255,0);border:1px solid white;"); } if(false == ClassXML::ReadTestParamXml(batteryName,test_param_xml)) { qDebug("XML is error!"); renewErrorBatteryParam(batteryName); } if(batteryName == Default_Battery) { ui->edit_MonVol->setText(QString::number((double)test_param_xml.mon_vol/10,'f',1)); ui->edit_NomiNalCap->setText(QString::number(test_param_xml.nominal_cap)); ui->edit_MonNum->setText(QString::number(test_param_xml.mon_number)); ui->edit_GroupNum->setText(QString::number(test_param_xml.group_number)); } else { ui->label_MonVol->setText(QString::number((double)test_param_xml.mon_vol/10,'f',1)); ui->label_NominalCap->setText(QString::number(test_param_xml.nominal_cap)); ui->label_MonNum->setText(QString::number(test_param_xml.mon_number)); ui->label_GroupNum->setText(QString::number(test_param_xml.group_number)); } } void Choose_Page::updateChoosePage() { batteryList = fileManage.getDirs(false); batteryNum = batteryList.count(); if(batteryNum%BatteryNumEachPage == 0) pageNum = batteryNum/BatteryNumEachPage; else pageNum = (batteryNum/BatteryNumEachPage)+1; if(pageNum<1) pageNum = 1; currentPageIndex = 0; int batteryNumOnCurrentPage; if(batteryNum > BatteryNumEachPage) batteryNumOnCurrentPage = BatteryNumEachPage; else batteryNumOnCurrentPage = batteryNum; for(int i=0;isetEnabled(false); listBattery[i]->setText(""); listBattery[i]->setIcon(QIcon("")); } for(int i=0;isetEnabled(true); listBattery[i]->setText(batteryList.at(i)); listBattery[i]->setIcon(QIcon(":new/prefix1/to.png")); } ui->pushButton_Last->setEnabled(false); if(batteryNum>BatteryNumEachPage) ui->pushButton_Next->setEnabled(true); else ui->pushButton_Next->setEnabled(false); ui->label_PageNum->setText(QString::number(currentPageIndex+1) +" / "+QString::number(pageNum)+tr(" 页")); ui->textBrowser->setText("");ui->textBrowser->setStyleSheet("color: rgb(255, 255, 0);background-color: rgb(255, 255, 255,0);"); ui->label_MonVol->setText(""); ui->label_NominalCap->setText(""); ui->label_MonNum->setText(""); ui->label_GroupNum->setText(""); ui->edit_MonVol->resize(QSize(0,0)); ui->edit_NomiNalCap->resize(QSize(0,0)); ui->edit_MonNum->resize(QSize(0,0)); ui->edit_GroupNum->resize(QSize(0,0)); ui->pushButton_WorkingPage->setEnabled(false); } void Choose_Page::UpdateInterface(int interface) { if(work_thread->localData.Interface == FACE_NEWPAGE) { new_page->closeCustom(false); } this->closeCustom(false); }