#include #include #include "configdatetimedlg.h" #include "ui_configdatetimedlg.h" #include "system.h" #include "soundplayer.h" ConfigDateTimeDlg::ConfigDateTimeDlg(QWidget *parent) : QDialog(parent), ui(new Ui::ConfigDateTimeDlg) { 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); ui->ctrSpBxYear->setFormatterWidth(4); QDateTime dt_tm = QDateTime::currentDateTime(); QDate dt_ = dt_tm.date(); QTime tm_ = dt_tm.time(); ui->ctrSpBxYear->setValue(dt_.year()); ui->ctrSpBxMonth->setValue(dt_.month()); ui->ctrSpBxDay->setValue(dt_.day()); ui->ctrSpBxHour->setValue(tm_.hour()); ui->ctrSpBxMin->setValue(tm_.minute()); ui->ctrSpBxYear->setFocus(); m_bInputState = true; connect(ui->keyboardwidget, SIGNAL(onOkKeyClicked()), this, SLOT(keyEnter_clicked())); connect(ui->keyboardwidget, SIGNAL(onCancelKeyClicked()), this, SLOT(keyCancel_clicked())); m_pMapperSpins = new QSignalMapper(this); m_pMapperSpins->setMapping(ui->ctrSpBxYear, ui->ctrSpBxYear); m_pMapperSpins->setMapping(ui->ctrSpBxMonth, ui->ctrSpBxMonth); m_pMapperSpins->setMapping(ui->ctrSpBxDay, ui->ctrSpBxDay); m_pMapperSpins->setMapping(ui->ctrSpBxHour, ui->ctrSpBxHour); m_pMapperSpins->setMapping(ui->ctrSpBxMin, ui->ctrSpBxMin); connect(ui->ctrSpBxYear, SIGNAL(focusInEdit()), m_pMapperSpins, SLOT(map())); connect(ui->ctrSpBxMonth, SIGNAL(focusInEdit()), m_pMapperSpins, SLOT(map())); connect(ui->ctrSpBxDay, SIGNAL(focusInEdit()), m_pMapperSpins, SLOT(map())); connect(ui->ctrSpBxHour, SIGNAL(focusInEdit()), m_pMapperSpins, SLOT(map())); connect(ui->ctrSpBxMin, SIGNAL(focusInEdit()), m_pMapperSpins, SLOT(map())); connect(m_pMapperSpins, SIGNAL(mapped(QWidget*)), this, SLOT(focusInSpinBox(QWidget*))); } ConfigDateTimeDlg::~ConfigDateTimeDlg() { delete ui; } void ConfigDateTimeDlg::on_ctrBtnOk_clicked() { time_t tm_t; QDate dt_(ui->ctrSpBxYear->value(), ui->ctrSpBxMonth->value(), ui->ctrSpBxDay->value()); QTime tm_(ui->ctrSpBxHour->value(), ui->ctrSpBxMin->value()); QDateTime dt_tm; dt_tm.setTime(tm_); dt_tm.setDate(dt_); tm_t = (time_t)dt_tm.toTime_t(); System::setRtcTime(dt_tm); stime(&tm_t); this->accept(); } void ConfigDateTimeDlg::on_ctrBtnCancel_clicked() { this->reject(); } void ConfigDateTimeDlg::keyPressEvent(QKeyEvent *event){ switch (event->key()) { case 0x01000032: // Turn left if(focusWidget() == ui->ctrSpBxYear) ui->ctrBtnCancel->setFocus(); else focusPreviousChild(); break; case 0x01000031: // Push break; case 0x01000030: // Turn right if(focusWidget() == ui->ctrBtnCancel) ui->ctrSpBxYear->setFocus(); else focusNextChild(); break; } } void ConfigDateTimeDlg::keyReleaseEvent(QKeyEvent *event){ switch (event->key()) { case 0x01000032: // Turn left if(focusWidget() == ui->ctrSpBxYear) 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) ui->keyboardwidget->focusInKeyboard(); } break; } case 0x01000030: // Turn right if(focusWidget() == ui->ctrBtnCancel) ui->ctrSpBxYear->setFocus(); else focusNextChild(); break; } } void ConfigDateTimeDlg::keyCancel_clicked(){ QSpinBox *spbx = qobject_cast(focusWidget()); if(spbx != NULL){ spbx->setValue(m_nFocusValue); } ui->keyboardwidget->focusOutKeyboard(); } void ConfigDateTimeDlg::keyEnter_clicked(){ ui->keyboardwidget->focusOutKeyboard(); } void ConfigDateTimeDlg::focusInSpinBox(QWidget *widget){ QSpinBox *spbx = qobject_cast(widget); if(spbx != NULL){ m_nFocusValue = spbx->value(); } }