servicepassinputdlg.cpp 2.09 KB
#include "servicepassinputdlg.h"
#include "ui_servicepassinputdlg.h"
#include "engineermenuwindow.h"
#include <QDebug>
#include "soundplayer.h"


ServicePassInputDlg::ServicePassInputDlg(QWidget *parent) :
    QDialog(parent),
    ui(new Ui::ServicePassInputDlg)
{
    ui->setupUi(this);
    setWindowFlags(Qt::FramelessWindowHint);
    setAttribute(Qt::WA_NoSystemBackground);
    setAttribute(Qt::WA_TranslucentBackground);
    setAttribute(Qt::WA_DeleteOnClose);
    this->setResult(QDialog::Accepted);
    foreach (QPushButton *button, findChildren<QPushButton *>())
        connect(button, &QPushButton::pressed, SoundPlayer::playClick);
    ui->ctrProgressBar->setMaxProgress(0,4);
    m_nCurInputCount = 0;
    this->setFocus();
    memset(m_strInputPass, 0x00, MAX_PASSWORD+1);
}

ServicePassInputDlg::~ServicePassInputDlg()
{
    delete ui;
}

void ServicePassInputDlg::on_ctrBtnOk_clicked()
{
    if( QString(m_strInputPass) == QString(PASS_WORD)){
        qDebug() << this->parentWidget() <<this->parent();
        EngineerMenuWindow *w = new EngineerMenuWindow(this->parentWidget());
        connect(w,SIGNAL(destroyed(QObject*)),this,SLOT(close()));
        w->setWindowModality(Qt::WindowModal);
        w->show();
        this->hide();
    }
    else {
        reject();
    }
}

void ServicePassInputDlg::on_ctrBtnCancel_clicked()
{
    reject();
}

void ServicePassInputDlg::keyPressEvent(QKeyEvent *event){
    if(event->key() == Qt::Key_Backspace){
        if(m_nCurInputCount>0) m_nCurInputCount--;
        m_strInputPass[m_nCurInputCount] = 0;
        qDebug() <<"back space input" << QString(m_strInputPass);
         ui->ctrProgressBar->setCurrentProgress(m_nCurInputCount);
    }
}

void ServicePassInputDlg::inputMethodEvent(QInputMethodEvent *event){
    if(m_nCurInputCount < MAX_PASSWORD){
        if(!event->commitString().isEmpty()){
            const QChar* in = event->commitString().constData();
            m_strInputPass[m_nCurInputCount++] = in[0];
            qDebug() <<"input event" << QString(m_strInputPass);
            ui->ctrProgressBar->setCurrentProgress(m_nCurInputCount);
        }
    }
}