#include #include "settingUiSysMng.h" #include "UiConfig.h" int settingUiSysMng::m_pageIndex = 0; settingUiSysMng::settingUiSysMng(int pageIndex, QWidget *parent) : SettingUiPage(QVector{ SetOpn(tr("设备语言"), "xxxxx", myListWidget::enPropertyMoreArrow), SetOpn(tr("数据加密"), "", myListWidget::enPropertySwitch), SetOpn(tr("自动重启"), "", myListWidget::enPropertySwitch), SetOpn(tr("自动重启时间"), "xx:xx", static_cast(myListWidget::enPropertyMoreArrow | myListWidget::enPropertyIndent1)), SetOpn(tr("自动重启间隔(天)"), "xx", static_cast(myListWidget::enPropertyMoreArrow | myListWidget::enPropertyIndent1)), SetOpn(tr("手动重启"), "", myListWidget::enPropertyMoreArrow), SetOpn(tr("服务器"), "xxxxxxxxxxxx:xxxx", myListWidget::enPropertyMoreArrow), SetOpn(tr("数据清空"), "", myListWidget::enPropertyMoreArrow), SetOpn(tr("恢复出厂设置"), "", static_cast(myListWidget::enPropertyMoreArrow | myListWidget::enPropertyRedWord)) }, parent) { m_pageIndex = pageIndex; qDebug() << "settingUiSysMng()"; } settingUiSysMng::~settingUiSysMng() { qDebug() << "~settingUiSysMng()"; } void settingUiSysMng::setBackstageUiinterface(BackstageInterfaceForUi *interface) { m_backstageIf = interface; reset(); } void settingUiSysMng::reset() { if(nullptr == m_backstageIf){ return; } for(int i = 0; i < config.size(); i ++) { QListWidgetItem* pItem = m_listWidget->item(i); myListWidget* wdt = dynamic_cast(m_listWidget->itemWidget(pItem)); if(wdt == nullptr){ return; } QString str; const int iBufSize = 64; char buf[iBufSize] = {'\0'}; switch(i) { case SYS_MNG_LANGUAGE: { int lang = static_cast(m_backstageIf->getLanguage()); if(lang >= 0 && lang < Language.size()){ str = Language[lang]; } } break; case SYS_MNG_AUTO_REBOOT: { bool switch_option = false; if(SYS_MNG_AUTO_REBOOT == i){ switch_option = m_backstageIf->getAutoRebootSw(); } wdt->updateIcon(switch_option ? ":/res/image/on.png" : ":/res/image/off.png"); } break; case SYS_MNG_AUTO_REBOOT_TIME: if(0 == m_backstageIf->getAutoRebootTime(buf, iBufSize)){ str = QString(buf); } break; case SYS_MNG_AUTO_REBOOT_INTERVAL: str = QString::number(m_backstageIf->getAutoRebootInterval()); break; case SYS_MNG_SERVER_ADDR: if(0 == m_backstageIf->getServerAddr(buf, iBufSize)){ str = QString(buf); } break; case SYS_MNG_DATA_ENCRYPT:qDebug() << "SYS_MNG_DATA_ENCRYPT"; { bool switch_option = m_backstageIf->getDataEncryptSw(); wdt->updateIcon(switch_option ? ":/res/image/on.png" : ":/res/image/off.png"); } break; default: break; } wdt->updateLabel(str); } controlListWidgetItemShow(m_backstageIf->getAutoRebootSw(), SYS_MNG_AUTO_REBOOT_TIME); controlListWidgetItemShow(m_backstageIf->getAutoRebootSw(), SYS_MNG_AUTO_REBOOT_INTERVAL); controlListWidgetItemShow(!UiConfig::GetInstance()->isFuncNotSupport(FuncDataEncrypt), SYS_MNG_DATA_ENCRYPT); } void settingUiSysMng::slotItemClicked(QListWidgetItem* item) { if(nullptr == m_backstageIf){ #ifndef DEBUG_MODE return; #endif } int row = m_listWidget->currentRow(); myListWidget* wdt = dynamic_cast(m_listWidget->itemWidget(item)); if(wdt == nullptr){ return; } switch(row){ case SYS_MNG_LANGUAGE: { int choosed = 0; const QVector& opts = Language; if(SYS_MNG_LANGUAGE == row){ #ifndef DEBUG_MODE choosed = static_cast(m_backstageIf->getLanguage()); #endif } RadioBtnChooseDialog dlg(opts, parent()->parent(), choosed, &LanguageSup, ""); if(QDialog::Accepted == dlg.exec()) { int newChoosed = dlg.getChoosedIndex(); qDebug() << "newChoosed:" << newChoosed; if(newChoosed != choosed){ QuestionDialog queDlg(tr("您需要重新启动设备以设置并切换语言"), parent()->parent(), tr("重新启动")); if(QDialog::Accepted == queDlg.exec()){ #ifndef DEBUG_MODE m_backstageIf->setLanguage(newChoosed); PureColorPage* black = new PureColorPage(0); black->show(); QTimer::singleShot(1000, this, SLOT(slotSysReboot())); //m_backstageIf->devReboot(); #endif wdt->updateLabel(opts[newChoosed]); } } } } break; case SYS_MNG_DATA_ENCRYPT: { bool setting_value = !(m_backstageIf->getDataEncryptSw()); QuestionDialog queDlg(setting_value ? tr("您确定要开启数据加密吗?若确定设备将重启!") : tr("您确定要关闭数据加密吗?若确定设备将重启!"), parent()->parent()); if(QDialog::Accepted == queDlg.exec()){ wdt->updateIcon(setting_value ? ":/res/image/on.png" : ":/res/image/off.png"); m_backstageIf->setDataEncryptSw(setting_value); QTimer::singleShot(1000, this, SLOT(slotSysReboot())); } } break; case SYS_MNG_AUTO_REBOOT: { bool setting_value = false; #ifndef DEBUG_MODE if(SYS_MNG_AUTO_REBOOT == row){ setting_value = static_cast(m_backstageIf->getAutoRebootSw()); } #endif setting_value = static_cast(!setting_value); wdt->updateIcon(setting_value ? ":/res/image/on.png" : ":/res/image/off.png"); #ifndef DEBUG_MODE if(SYS_MNG_AUTO_REBOOT == row){ m_backstageIf->setAutoRebootSw(setting_value); controlListWidgetItemShow(setting_value, SYS_MNG_AUTO_REBOOT_TIME); controlListWidgetItemShow(setting_value, SYS_MNG_AUTO_REBOOT_INTERVAL); } #endif } break; case SYS_MNG_AUTO_REBOOT_TIME: { const int iBufSize = 64; char buf[iBufSize] = {'\0'}; if(0 == m_backstageIf->getAutoRebootTime(buf, iBufSize)){ QDateTime dateTime(QDateTime::currentDateTime()); dateTime.setTime(QTime().fromString(QString(buf), "hh:mm")); DateTimeDialog timeDlg(dateTime, parent()->parent(), false); if(timeDlg.exec() == QDialog::Accepted){ m_backstageIf->setAutoRebootTime(timeDlg.getValueSet().toString("hh:mm").toStdString().c_str()); wdt->updateLabel(timeDlg.getValueSet().toString("hh:mm")); } } } break; case SYS_MNG_AUTO_REBOOT_INTERVAL: { int currentValue = 10; int min = 0; int max = 100; QString tip("this is a line of prompt text"); #ifndef DEBUG_MODE if(SYS_MNG_AUTO_REBOOT_INTERVAL == row){ currentValue = m_backstageIf->getAutoRebootInterval(); min = 1; max = 100; tip.clear(); } #endif SliderDialog dlg(currentValue, min, max, tip, parent()->parent()); if(dlg.exec() == QDialog::Accepted) { QString str("valueSet"); int valueSet = dlg.getValueSet(); #ifndef DEBUG_MODE if(SYS_MNG_AUTO_REBOOT_INTERVAL == row){ m_backstageIf->setAutoRebootInterval(valueSet); str = QString::number(valueSet); } #endif wdt->updateLabel(str); } } break; case SYS_MNG_SERVER_ADDR: { bool settingFailed = true; do{ QStringList strs; if(SYS_MNG_SERVER_ADDR == row){ strs << tr("服务器地址:") << tr("端口:"); } LineEditInputDialog dlg(strs, parent()->parent()); if(dlg.exec() == QDialog::Accepted) { QString str; do{ if(SYS_MNG_SERVER_ADDR == row){ if("" != dlg.getRow(0) && "" != dlg.getRow(1)){ bool isDigi = false; int valueSet = dlg.getRow(1).toInt(&isDigi); if( (!isDigi) || (valueSet < 0 || valueSet > 65535)){ break; } if(m_backstageIf){ str = dlg.getRow(0) + ":" + dlg.getRow(1); m_backstageIf->setServerAddr(const_cast(str.toStdString().c_str())); wdt->updateLabel(str); settingFailed = false; } } } }while(0); } else { settingFailed = false; } if(settingFailed) { InfoDialog(tr("设置有误,请重新输入!"), parent()->parent()).exec(); } }while(settingFailed); } break; case SYS_MNG_MAN_REBOOT: case SYS_MNG_CLEAR_DATA: case SYS_MNG_RESTORE: { QString que; QString btnText; if(SYS_MNG_MAN_REBOOT == row){ que = tr("您确定重新启动FaceTick吗?"); btnText = tr("重新启动"); } else if(SYS_MNG_CLEAR_DATA == row){ que = tr("您确定清空数据吗?"); btnText = tr("清空数据"); } else if(SYS_MNG_RESTORE == row){ que = tr("您确定恢复出厂设置吗?"); btnText = tr("恢复"); } QuestionDialog dlg(que, parent()->parent(), btnText); if(QDialog::Accepted == dlg.exec()){ #ifndef DEBUG_MODE if(SYS_MNG_MAN_REBOOT == row){ PureColorPage* black = new PureColorPage(0); black->show(); QTimer::singleShot(1000, this, SLOT(slotSysReboot())); //m_backstageIf->devReboot(); } else if(SYS_MNG_CLEAR_DATA == row){ m_backstageIf->cleanData(); } else if(SYS_MNG_RESTORE == row){ m_backstageIf->recoveryFactorySetting(); //create a black page before sys reboot PureColorPage* black = new PureColorPage(0); black->show(); QTimer::singleShot(1000, this, SLOT(slotSysReboot())); } #endif } } break; default: break; } } void settingUiSysMng::slotSysReboot() { m_backstageIf->devReboot(); }