configlanguagedlg.cpp 4.79 KB
#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<QPushButton *>())
        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(i<m_vectorTabOrder.size()-1){
            i+=1;
            m_vectorTabOrder[i]->setFocus();
        }
        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<QPushButton*>(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(i<m_vectorTabOrder.size()-1){
            i+=1;
            m_vectorTabOrder[i]->setFocus();
        }
        else if(i== (m_vectorTabOrder.size()-1)){
            i=0;
            m_vectorTabOrder[i]->setFocus();
        }
        else{
            i=0;
            m_vectorTabOrder[i]->setFocus();
        }
        break;
    }
}