#include "sysset_page.h" #include "ui_sysset_page.h" #include "IMEKeyBoard/keyboard_num.h" #include #include "CustomClass/mymessagebox.h" #include "IMEKeyBoard/syszuxpinyin.h" SysSet_Page::SysSet_Page(QWidget *parent, Work_Thread *thread) : custom_dialog(parent), ui(new Ui::SysSet_Page) { ui->setupUi(this); QStringList modeStrList; modeStrList<comboBox_tcptype->setIconSize(QSize(1, 50)); for(int i=0;icomboBox_tcptype->addItem(icon,modeStrList.at(i)); } workThread = thread; set_btn_beep(ui->pushButton_Exit,SIGNAL(pressed())); //set_btn_beep(ui->SysSet_tab,SIGNAL(currentChanged(int))); //tab0 set_btn_beep(ui->pushButton_settime,SIGNAL(pressed())); set_btn_beep(ui->ledit_date,SIGNAL(custom_click())); set_btn_beep(ui->ledit_time,SIGNAL(custom_click())); //tab1 set_btn_beep(ui->ledit_savedatainterval,SIGNAL(custom_click())); set_btn_beep(ui->ledit_devaddr,SIGNAL(custom_click())); //tab2 set_btn_beep(ui->pushButton_setipaddr,SIGNAL(pressed())); set_btn_beep(ui->ledit_ipaddr,SIGNAL(custom_click())); set_btn_beep(ui->ledit_netmask,SIGNAL(custom_click())); set_btn_beep(ui->ledit_gateway,SIGNAL(custom_click())); set_btn_beep(ui->comboBox_tcptype,SIGNAL(activated(int))); set_btn_beep(ui->ledit_serverip,SIGNAL(custom_click())); set_btn_beep(ui->ledit_serverport,SIGNAL(custom_click())); //tab3 set_btn_beep(ui->btn_to_reboot,SIGNAL(pressed())); set_btn_beep(ui->btn_to_8kw,SIGNAL(pressed())); set_btn_beep(ui->btn_deviceconfig,SIGNAL(pressed())); set_btn_beep(ui->btn_deviceadj,SIGNAL(pressed())); set_btn_beep(ui->ledit_password,SIGNAL(custom_click())); set_btn_beep(ui->btn_setPWD,SIGNAL(pressed())); set_btn_beep(ui->btn_logoset,SIGNAL(pressed())); set_btn_beep(ui->btn_funcset,SIGNAL(pressed())); connect(ui->pushButton_Exit,SIGNAL(released()),this,SLOT(BtnReleased())); connect(ui->SysSet_tab,SIGNAL(currentChanged(int)),this,SLOT(TabChanged(int))); //tab0 connect(ui->pushButton_settime,SIGNAL(released()),this,SLOT(BtnReleased())); connect(ui->ledit_date,SIGNAL(custom_click()),this,SLOT(leditAction())); connect(ui->ledit_time,SIGNAL(custom_click()),this,SLOT(leditAction())); //tab1 connect(ui->ledit_savedatainterval,SIGNAL(custom_click()),this,SLOT(leditAction())); connect(ui->ledit_devaddr,SIGNAL(custom_click()),this,SLOT(leditAction())); //tab2 connect(ui->pushButton_setipaddr,SIGNAL(released()),this,SLOT(BtnReleased())); connect(ui->ledit_ipaddr,SIGNAL(custom_click()),this,SLOT(leditAction())); connect(ui->ledit_netmask,SIGNAL(custom_click()),this,SLOT(leditAction())); connect(ui->ledit_gateway,SIGNAL(custom_click()),this,SLOT(leditAction())); connect(ui->comboBox_tcptype,SIGNAL(currentIndexChanged(int)),this,SLOT(ComboBoxTestTypeAct(int))); connect(ui->ledit_serverip,SIGNAL(custom_click()),this,SLOT(leditAction())); connect(ui->ledit_serverport,SIGNAL(custom_click()),this,SLOT(leditAction())); //tab3 connect(ui->btn_to_reboot,SIGNAL(released()),this,SLOT(BtnReleased())); connect(ui->btn_to_8kw,SIGNAL(released()),this,SLOT(BtnReleased())); connect(ui->btn_deviceconfig,SIGNAL(released()),this,SLOT(BtnReleased())); connect(ui->btn_deviceadj,SIGNAL(released()),this,SLOT(BtnReleased())); connect(ui->btn_logoset,SIGNAL(released()),this,SLOT(BtnReleased())); connect(ui->btn_funcset,SIGNAL(released()),this,SLOT(BtnReleased())); connect(ui->ledit_password,SIGNAL(custom_click()),this,SLOT(leditAction())); connect(ui->btn_setPWD,SIGNAL(released()),this,SLOT(BtnReleased())); adjustPage = new Adjust_Page(this,workThread); adjustPage->hide(); configPage = new Config_Page(this,workThread); configPage->hide(); t_timer = new QTimer(this); connect(t_timer,SIGNAL(timeout()),this,SLOT(get_date_time())); ClassXML::read_interface(ipAddr,netMask,gateWay); } SysSet_Page::~SysSet_Page() { delete ui; delete t_timer; } void SysSet_Page::showSyssetPage() { sysParam = workThread->sysParamXml; beep_en = true; if(ui->SysSet_tab->currentIndex() != 0){ beep_en = false; ui->SysSet_tab->setCurrentIndex(0); } ui->label_version->setText(APP_VERSION); ui->label_version8kw->setText(getModuleVerson()); ui->ledit_savedatainterval->setText(QString::number(sysParam.save_time_interval)); ui->ledit_devaddr->setText(QString::number(sysParam.dev_addr)); ui->ledit_password->setEchoMode(QLineEdit::Password); ui->btn_to_reboot->setVisible(false); ui->btn_to_8kw->setVisible(false); ui->btn_deviceconfig->setVisible(false); ui->btn_deviceadj->setVisible(false); ui->btn_logoset->setVisible(false); ui->btn_funcset->setVisible(false); ui->label_password->setVisible(true); ui->ledit_password->setVisible(true); ui->btn_setPWD->setVisible(true); ui->btn_setPWD->setEnabled(false); ui->pushButton_settime->setEnabled(false); one_sub_window_exist = false; time_edit = false; get_date_time(); ui->ledit_ipaddr->setText(ipAddr); ui->ledit_netmask->setText(netMask); ui->ledit_gateway->setText(gateWay); ip_edit = false; ui->comboBox_tcptype->setCurrentIndex(sysParam.tcp_type); if(1 == sysParam.tcp_type){ ui->ledit_serverip->setVisible(false); ui->ledit_serverport->setVisible(false); ui->label_serverip->setVisible(false); ui->label_serverport->setVisible(false); } else{ ui->ledit_serverip->setVisible(true); ui->ledit_serverport->setVisible(true); ui->label_serverip->setVisible(true); ui->label_serverport->setVisible(true); ui->ledit_serverip->setText(sysParam.server_ip); ui->ledit_serverport->setText(QString::number(sysParam.server_port)); } server_edit = false; ui->pushButton_setipaddr->setEnabled(false); t_timer->start(500); this->exec(); } void SysSet_Page::closeSyssetPage() { t_timer->stop(); this->close(); } void SysSet_Page::ComboBoxTestTypeAct(int idex) { if( idex != sysParam.tcp_type ){ server_edit = true; ui->pushButton_setipaddr->setEnabled(true); } if(1 == idex){ ui->ledit_serverip->setVisible(false); ui->ledit_serverport->setVisible(false); ui->label_serverip->setVisible(false); ui->label_serverport->setVisible(false); } else{ ui->ledit_serverip->setVisible(true); ui->ledit_serverport->setVisible(true); ui->label_serverip->setVisible(true); ui->label_serverport->setVisible(true); ui->ledit_serverip->setText(sysParam.server_ip); ui->ledit_serverport->setText(QString::number(sysParam.server_port)); } } void SysSet_Page::BtnReleased() { QPushButton *pb = dynamic_cast(sender()); if(pb == ui->pushButton_Exit) { closeSyssetPage(); } else if(pb == ui->pushButton_settime){ set_date_time(ctDT); } else if(pb == ui->pushButton_setipaddr){ if(ip_edit){ setEth0Info(); } if(server_edit){ setServerInfo(); } } else if(pb == ui->btn_to_reboot) { QDir dir; if(false == dir.exists("/mnt/usb/BatterTester") && false == dir.exists("/mnt/usb/welcome_en.png")&& false == dir.exists("/mnt/usb/welcome_cn.png")&& false == dir.exists("/mnt/usb/welcome.png")) { popBox(tr("升级文件不存在!")); return; } MessageBox box(this,tr("确定要升级吗?"),MessageBox::Yes|MessageBox::No,workThread); if(box.exec()==MessageBox::Yes){ system("/app/run_appupdate.sh &"); } } else if(pb == ui->btn_to_8kw) { system("/app/run_update8kw.sh &"); } else if(pb == ui->btn_deviceconfig) { configPage->showConfigPage(); } else if(pb == ui->btn_deviceadj) { adjustPage->showAdjustPage(); } else if(pb == ui->btn_logoset) { } else if(pb == ui->btn_funcset) { } else if(pb == ui->btn_setPWD) { if( "991231" == ui->ledit_password->text() || "881231" == ui->ledit_password->text() ) { ui->label_password->setVisible(false); ui->ledit_password->setVisible(false); ui->btn_setPWD->setVisible(false); ui->btn_to_reboot->setVisible(true); ui->btn_to_8kw->setVisible(true); ui->btn_deviceconfig->setVisible(true); ui->btn_deviceadj->setVisible(true); if("881231" == ui->ledit_password->text()) { //ui->btn_logoset->setVisible(true); //ui->btn_funcset->setVisible(true); } } else { ui->ledit_password->setText(""); ui->btn_setPWD->setEnabled(false); popBox(tr("密码错误,请重新输入!")); } } } QString SysSet_Page::getModuleVerson() { QString modversion; quint32 ver = workThread->modTestData.Ver; modversion += QString::number((quint8)(ver>>24)); modversion += "."; modversion += QString::number((quint8)(ver>>16)); modversion += "."; modversion += QString::number((quint8)(ver>>8)); modversion += "."; modversion += QString::number((quint8)ver); return modversion; } void SysSet_Page::TabChanged(int index) { switch(index) { case 0: if(beep_en) custom_dialog::buzzer_beep(50); break; case 1: if(beep_en) custom_dialog::buzzer_beep(50); break; case 2: if(beep_en) custom_dialog::buzzer_beep(50); break; case 3: if(beep_en) custom_dialog::buzzer_beep(50); ui->ledit_password->setText(""); ui->btn_setPWD->setEnabled(false); break; default:break; } if(!beep_en){ beep_en = true; } } void SysSet_Page::setIcon() { if(workThread->iconState.usbState) ui->label_USB->setPixmap(QPixmap(":new/prefix1/usb.png")); else ui->label_USB->setPixmap(QPixmap("")); } void SysSet_Page::get_date_time() { qDT = QDateTime::currentDateTime(); if(!time_edit) { ctDT.year = qDT.date().year()-2000; ctDT.month = qDT.date().month(); ctDT.day = qDT.date().day(); ctDT.hour = qDT.time().hour(); ctDT.minute = qDT.time().minute(); ctDT.second = qDT.time().second(); } QString dt; dt.sprintf("%04d-%02d-%02d",ctDT.year+2000,ctDT.month,ctDT.day); ui->ledit_date->setText(dt); QString tt; tt.sprintf("%02d:%02d",ctDT.hour,ctDT.minute); ui->ledit_time->setText(tt); QString time; time.sprintf("%04d-%02d-%02d %02d:%02d:%02d",qDT.date().year(),qDT.date().month(),qDT.date().day(), qDT.time().hour(),qDT.time().minute(),qDT.time().second()); ui->label_Time->setText(time); setIcon(); if(1 == workThread->remoteState.to_workpage){ closeSyssetPage(); } } void SysSet_Page::setEth0Info() { QString ip0 = ui->ledit_ipaddr->text(); QString mask0 = ui->ledit_netmask->text(); QString gate0 = ui->ledit_gateway->text(); if(ClassXML::isIPaddress(ip0)==true && ClassXML::isIPaddress(mask0)==true && ClassXML::isIPaddress(gate0)==true){ ipAddr = ip0; netMask = mask0; gateWay = gate0; QString text1 = "ifconfig eth0 "+ipAddr+" netmask "+netMask; QString text2 = "route add default gw "+gateWay+" eth0"; system(text1.toLocal8Bit().data()); system(text2.toLocal8Bit().data()); ClassXML::write_interface(ipAddr,netMask,gateWay); ip_edit = false; ui->pushButton_setipaddr->setEnabled(false); ui->ledit_ipaddr->setStyleSheet("color:black"); ui->ledit_netmask->setStyleSheet("color:black"); ui->ledit_gateway->setStyleSheet("color:black"); } } void SysSet_Page::setServerInfo() { QString serverip = ui->ledit_serverip->text(); int tcp_type = ui->comboBox_tcptype->currentIndex(); quint16 port = ui->ledit_serverport->text().toInt(); if(ClassXML::isIPaddress(serverip)==true){ sysParam.tcp_type = tcp_type; sysParam.server_ip = serverip; sysParam.server_port = port; workThread->saveSysParam(sysParam); server_edit = false; ui->pushButton_setipaddr->setEnabled(false); ui->ledit_serverip->setStyleSheet("color:black"); ui->ledit_serverport->setStyleSheet("color:black"); } } void SysSet_Page::set_date_time(CT_DATE_TIME &dt) { QString set_dt; //month/day/hour/minute/year set_dt.sprintf("date %02d%02d%02d%02d%04d.%02d",dt.month,dt.day,dt.hour,dt.minute,(dt.year+2000),dt.second); //MsgBox box(this, MsgBox::Question, MB_Caption, tr("时间设置需重启后生效,确定?"), MsgBox::Yes|MsgBox::No); //if( MsgBox::Yes == box.exec() ) { // custom_dialog::buzzer_beep(50); system(set_dt.toLocal8Bit().data());//月日时分年.秒 system("hwclock -w"); //system("/app/restart_app.sh &"); //return; } time_edit = false; ui->ledit_date->setStyleSheet("color:black"); ui->ledit_time->setStyleSheet("color:black"); ui->pushButton_settime->setEnabled(false); } bool SysSet_Page::checkDateText(QString &Chked, CT_DATE_TIME &datetime) { if(Chked.length()<5) return false; if(Chked.contains(QRegExp("[.:]"))) return false; QString year = Chked.section("-",0,0).trimmed(); QString month = Chked.section("-",1,1).trimmed(); QString day = Chked.section("-",2,2).trimmed(); int iy = year.toInt(); int im = month.toInt(); int id = day.toInt(); if(iy<2000 || iy>2200) return false; if(im<1 || im>12) return false; if(id<1 || id>31) return false; datetime.year = iy-2000; datetime.month = im; datetime.day = id; return true; } bool SysSet_Page::checkTimeText(QString &Chked,CT_DATE_TIME &datetime) { if(Chked.length()<3) return false; if(Chked.contains(QRegExp("[.-]"))) return false; QString hour = Chked.section(":",0,0).trimmed(); QString minute = Chked.section(":",1,1).trimmed(); int ih = hour.toInt(); int im = minute.toInt(); if(ih<0 || ih>23) return false; if(im<0 || im>59) return false; datetime.hour = ih; datetime.minute = im; return true; } void SysSet_Page::leditAction() { Custom_LineEdit *le = dynamic_cast(sender()); if(le == ui->ledit_date) { KeyBoard_Num keyboard(this, INPUT_DATE, ui->label_date->text()); keyboard.execKeyboard(); DATA_KB_RTN kbdata = keyboard.get_kb_data(); if(kbdata.If_OK) { if(checkDateText(kbdata.set_text,ctDT)) { time_edit = true; le->setStyleSheet("color:red"); } else { //格式错误 qDebug("format error"); } } } else if(le == ui->ledit_time) { KeyBoard_Num keyboard(this, INPUT_TIME, ui->label_time->text()); keyboard.execKeyboard(); DATA_KB_RTN kbdata = keyboard.get_kb_data(); if(kbdata.If_OK) { if(checkTimeText(kbdata.set_text,ctDT)) { time_edit = true; le->setStyleSheet("color:red"); } else { //格式错误 qDebug("format error"); } } } else if(le == ui->ledit_savedatainterval) { KeyBoard_Num keyboard(this, INPUT_INT, ui->label_savedatainterval->text()); keyboard.execKeyboard(); DATA_KB_RTN kbdata = keyboard.get_kb_data(); if(kbdata.If_OK) { int st = kbdata.set_text.toInt(); if(st>=5 && st<=7200) { le->setText(QString::number(st)); sysParam.save_time_interval = st; workThread->saveSysParam(sysParam); } } } else if(le == ui->ledit_devaddr) { KeyBoard_Num keyboard(this, INPUT_INT, ui->label_devaddr->text()); keyboard.execKeyboard(); DATA_KB_RTN kbdata = keyboard.get_kb_data(); if(kbdata.If_OK) { int st = kbdata.set_text.toInt(); if(st>=1 && st<=254) { le->setText(QString::number(st)); sysParam.dev_addr = st; workThread->saveSysParam(sysParam); } } } else if(le == ui->ledit_ipaddr){ KeyBoard_Num keyboard(this, INPUT_DATA, ui->label_ipaddr->text()); keyboard.execKeyboard(); DATA_KB_RTN kbdata = keyboard.get_kb_data(); if(kbdata.If_OK) { if(ClassXML::isIPaddress(kbdata.set_text)) { ip_edit = true; le->setText(kbdata.set_text); le->setStyleSheet("color:red"); } else { //格式错误 qDebug("format error"); } } } else if(le == ui->ledit_netmask){ KeyBoard_Num keyboard(this, INPUT_DATA, ui->label_netmask->text()); keyboard.execKeyboard(); DATA_KB_RTN kbdata = keyboard.get_kb_data(); if(kbdata.If_OK) { if(ClassXML::isIPaddress(kbdata.set_text)) { ip_edit = true; le->setText(kbdata.set_text); le->setStyleSheet("color:red"); } else { //格式错误 qDebug("format error"); } } } else if(le == ui->ledit_gateway){ KeyBoard_Num keyboard(this, INPUT_DATA, ui->label_gateway->text()); keyboard.execKeyboard(); DATA_KB_RTN kbdata = keyboard.get_kb_data(); if(kbdata.If_OK) { if(ClassXML::isIPaddress(kbdata.set_text)) { ip_edit = true; le->setText(kbdata.set_text); le->setStyleSheet("color:red"); } else { //格式错误 qDebug("format error"); } } } else if(le == ui->ledit_serverip){ KeyBoard_Num keyboard(this, INPUT_DATA, ui->label_serverip->text()); keyboard.execKeyboard(); DATA_KB_RTN kbdata = keyboard.get_kb_data(); if(kbdata.If_OK) { if(ClassXML::isIPaddress(kbdata.set_text)) { server_edit = true; le->setText(kbdata.set_text); le->setStyleSheet("color:red"); } else { //格式错误 qDebug("format error"); } } } else if(le == ui->ledit_serverport){ KeyBoard_Num keyboard(this, INPUT_INT, ui->label_serverport->text()); keyboard.execKeyboard(); DATA_KB_RTN kbdata = keyboard.get_kb_data(); if(kbdata.If_OK) { int st = kbdata.set_text.toInt(); if(st>=1 && st<=65535) { le->setText(QString::number(st)); server_edit = true; le->setStyleSheet("color:red"); } } } else if(le == ui->ledit_password) { KeyBoard_Num keyboard(this, INPUT_PW, tr("高级设置密码")); keyboard.execKeyboard(); DATA_KB_RTN kbdata = keyboard.get_kb_data(); if(kbdata.If_OK) { ui->ledit_password->setText(kbdata.set_text); ui->btn_setPWD->setEnabled(true); } } if(time_edit){ ui->pushButton_settime->setEnabled(true); } if(ip_edit || server_edit){ ui->pushButton_setipaddr->setEnabled(true); } } //************告警窗口*****************// void SysSet_Page::popBox(QString msg) { MessageBox box(this,msg,MessageBox::Ok,workThread); box.exec(); }