#include #include #include "config1digitsetdlg.h" #include "ui_config1digitsetdlg.h" #include "soundplayer.h" using namespace Define; Config1DigitSetDlg::Config1DigitSetDlg(QWidget *parent, ConfigType type) : QDialog(parent), ui(new Ui::Config1DigitSetDlg) { Config* cfg = Config::getInstance(); QString strTemp1,strTemp2; config_1digit_set setting_val; config_item item; ui->setupUi(this); this->setWindowFlags( Qt::FramelessWindowHint); this->setAttribute( Qt::WA_DeleteOnClose); qApp->setActiveWindow(this); this->setFocus(); foreach (QPushButton *button, findChildren()) connect(button, &QPushButton::pressed, SoundPlayer::playClick); m_nType = type; ui->ctrLbTitle->setText(cfg->getTitleString(m_nType)); item = cfg->getConfigValue(m_nType); ui->ctrSpBxValue->setValue(item.d32); switch(m_nType){ case config_set_auto_darkness: setting_val = auto_darkness_dlgset; break; case config_set_load_ready: setting_val = load_ready_dlgset; break; default: setting_val.min = 0; setting_val.str_unit[0] = 0; setting_val.maxlen=2; setting_val.max = 10; break; } ui->ctrSpBxValue->setMaximum(setting_val.max); ui->ctrSpBxValue->setMinimum(setting_val.min); strTemp1.sprintf("(%%0%dd ~ %%0%dd %s)", setting_val.maxlen,setting_val.maxlen,setting_val.str_unit); qDebug() <ctrLbRange->setText(strTemp2); strTemp1.sprintf("%%0%d",setting_val.maxlen); ui->ctrSpBxValue->installEventFilter(this); connect(ui->keyboardwidget, SIGNAL(onOkKeyClicked()), this, SLOT(keyEnter_clicked())); connect(ui->keyboardwidget, SIGNAL(onCancelKeyClicked()), this, SLOT(keyCancel_clicked())); } Config1DigitSetDlg::~Config1DigitSetDlg() { delete ui; } void Config1DigitSetDlg::on_ctrBtnOk_clicked() { Config* cfg = Config::getInstance(); config_item item; item.d32 = ui->ctrSpBxValue->value(); cfg->setConfigValue(m_nType,item); accept(); } void Config1DigitSetDlg::on_ctrBtnCancel_clicked() { reject(); } bool Config1DigitSetDlg::eventFilter(QObject *object, QEvent *event){ if (object == ui->ctrSpBxValue && event->type() == QEvent::MouseButtonRelease ) { ui->ctrSpBxValue->selectAll(); qDebug() << "Mouse Release2"; } return QWidget::eventFilter(object, event); } void Config1DigitSetDlg::keyPressEvent(QKeyEvent *event){ switch (event->key()) { case 0x01000032: // Turn left if(focusWidget() == ui->ctrSpBxValue) ui->ctrBtnCancel->setFocus(); else focusPreviousChild(); break; case 0x01000031: // Push break; case 0x01000030: // Turn right if(focusWidget() == ui->ctrBtnCancel) ui->ctrSpBxValue->setFocus(); else focusNextChild(); break; } } void Config1DigitSetDlg::keyReleaseEvent(QKeyEvent *event){ switch (event->key()) { case 0x01000032: // Turn left if(focusWidget() == ui->ctrSpBxValue) ui->ctrBtnCancel->setFocus(); else focusPreviousChild(); break; case 0x01000031: // Push { QPushButton *btn = qobject_cast(focusWidget()); if(btn != NULL){ btn->click(); } else{ QSpinBox *spbx = qobject_cast(focusWidget()); qDebug() << "grab keyboard"; if(spbx != NULL) { m_nPrevValue = spbx->value(); ui->keyboardwidget->focusInKeyboard(); } } break; } case 0x01000030: // Turn right if(focusWidget() == ui->ctrBtnCancel) ui->ctrSpBxValue->setFocus(); else focusNextChild(); break; } } void Config1DigitSetDlg::keyCancel_clicked(){ if(focusWidget() == ui->ctrSpBxValue) ui->ctrSpBxValue->setValue(m_nPrevValue); ui->keyboardwidget->focusOutKeyboard(); } void Config1DigitSetDlg::keyEnter_clicked(){ ui->keyboardwidget->focusOutKeyboard(); }