#include "config.h" #include "configlanguagedlg.h" #include "ui_configlanguagedlg.h" #include "soundplayer.h" using namespace Define; ConfigLanguageDlg::ConfigLanguageDlg(QWidget *parent) : QDialog(parent), ui(new Ui::ConfigLanguageDlg) { 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->pushButton_1->setText(tr(language_menu[0])); ui->pushButton_2->setText(tr(language_menu[1])); ui->pushButton_3->setText(tr(language_menu[2])); Config *cfg = Config::getInstance(); config_item item; cfg->getConfigValue(config_language); m_nCurSelLang = item.d32; m_pSignalMapper = new QSignalMapper(this); m_pSignalMapper->setMapping(ui->pushButton_1,0); m_pSignalMapper->setMapping(ui->pushButton_2,1); m_pSignalMapper->setMapping(ui->pushButton_3,2); connect(ui->pushButton_1,SIGNAL(clicked(bool)),m_pSignalMapper,SLOT(map())); connect(ui->pushButton_2,SIGNAL(clicked(bool)),m_pSignalMapper,SLOT(map())); connect(ui->pushButton_3,SIGNAL(clicked(bool)),m_pSignalMapper,SLOT(map())); connect(m_pSignalMapper,SIGNAL(mapped(int)),this,SLOT(onConfigBtnClicked(int))); m_vectorTabOrder.append(this); m_vectorTabOrder.append(ui->pushButton_1); m_vectorTabOrder.append(ui->pushButton_2); m_vectorTabOrder.append(ui->pushButton_3); m_vectorTabOrder.append(ui->ctrBtnOk); m_vectorTabOrder.append(ui->ctrBtnCancel); reloadUi(); } ConfigLanguageDlg::~ConfigLanguageDlg() { delete ui; } void ConfigLanguageDlg::on_ctrBtnOk_clicked() { Config* cfg = Config::getInstance(); config_item item; item.d32 = m_nCurSelLang; cfg->setConfigValue(config_language, item); this->accept(); } void ConfigLanguageDlg::on_ctrBtnCancel_clicked() { this->reject(); } void ConfigLanguageDlg::onConfigBtnClicked(const int sel){ m_nCurSelLang = sel; } void ConfigLanguageDlg::reloadUi(){ switch(m_nCurSelLang){ case 0: ui->pushButton_1->setChecked(true); break; case 1: ui->pushButton_2->setChecked(true); break; case 2: ui->pushButton_3->setChecked(true); break; default: break; } } void ConfigLanguageDlg::keyPressEvent(QKeyEvent *event){ int i = 0; switch (event->key()) { case 0x01000030: // Turn left for(i = 0; i < m_vectorTabOrder.size();i++){ if(focusWidget() == m_vectorTabOrder[i]) break; } if(i==0){ i = m_vectorTabOrder.size()-1; m_vectorTabOrder[i]->setFocus(); } else if(i < m_vectorTabOrder.size()) { i = i - 1; m_vectorTabOrder[i]->setFocus(); } else{ i=0; m_vectorTabOrder[i]->setFocus(); } break; case 0x01000031: // Push break; case 0x01000032: // Turn right for(i = 0; i < m_vectorTabOrder.size();i++){ if(focusWidget() == m_vectorTabOrder[i]) break; } if(isetFocus(); } else if(i== (m_vectorTabOrder.size()-1)){ i=0; m_vectorTabOrder[i]->setFocus(); } else{ i=0; m_vectorTabOrder[i]->setFocus(); } break; } } void ConfigLanguageDlg::keyReleaseEvent(QKeyEvent *event){ int i = 0; switch (event->key()) { case 0x01000030: // Turn left for(i = 0; i < m_vectorTabOrder.size();i++){ if(focusWidget() == m_vectorTabOrder[i]) break; } if(i==0){ i = m_vectorTabOrder.size()-1; m_vectorTabOrder[i]->setFocus(); } else if(i < m_vectorTabOrder.size()) { i = i - 1; m_vectorTabOrder[i]->setFocus(); } else{ i=0; m_vectorTabOrder[i]->setFocus(); } break; case 0x01000031: // Push { QPushButton *btn = qobject_cast(focusWidget()); if(btn != NULL){ btn->click(); } break; } case 0x01000032: // Turn right for(i = 0; i < m_vectorTabOrder.size();i++){ if(focusWidget() == m_vectorTabOrder[i]) break; } if(isetFocus(); } else if(i== (m_vectorTabOrder.size()-1)){ i=0; m_vectorTabOrder[i]->setFocus(); } else{ i=0; m_vectorTabOrder[i]->setFocus(); } break; } }