Blame view

app/gui/oven_control/servicepassinputdlg.cpp 3.73 KB
d0ee3ccc8   고영탁   버그 수정 및 비밀 번호 입력창 개발
1
2
  #include "servicepassinputdlg.h"
  #include "ui_servicepassinputdlg.h"
d66410abd   고영탁   에러 팝업 형태 변경
3
4
  #include "engineermenuwindow.h"
  #include <QDebug>
66e60ceb5   김태훈   모든 버튼에 음향 효과 추가
5
  #include "soundplayer.h"
d0ee3ccc8   고영탁   버그 수정 및 비밀 번호 입력창 개발
6
d0ee3ccc8   고영탁   버그 수정 및 비밀 번호 입력창 개발
7
8
9
10
11
12
13
14
15
16
  
  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);
63a45681f   고영탁   엔코더 기능 구현
17
18
      qApp->setActiveWindow(this);
      ui->ctrProgressBar->setFocus();
d66410abd   고영탁   에러 팝업 형태 변경
19
      this->setResult(QDialog::Accepted);
66e60ceb5   김태훈   모든 버튼에 음향 효과 추가
20
21
      foreach (QPushButton *button, findChildren<QPushButton *>())
          connect(button, &QPushButton::pressed, SoundPlayer::playClick);
79daa7209   고영탁   비밀번호 8자 변경
22
      ui->ctrProgressBar->setMaxProgress(0,MAX_PASSWORD);
be2756ef5   고영탁   패스워드 입력 디자인 변경 외 1건
23
      m_nCurInputCount = 0;
be2756ef5   고영탁   패스워드 입력 디자인 변경 외 1건
24
      memset(m_strInputPass, 0x00, MAX_PASSWORD+1);
63a45681f   고영탁   엔코더 기능 구현
25
26
27
28
29
      connect(ui->keyboardwidget,SIGNAL(onBackspaceKeyClicked()), SLOT(backspaceKeyPressEvent()));
      connect(ui->keyboardwidget, SIGNAL(onOkKeyClicked()), SLOT(keyEnter_clicked()));
      connect(ui->keyboardwidget, SIGNAL(onCancelKeyClicked()),SLOT(keyCancel_clicked()));
      connect(ui->keyboardwidget,SIGNAL(onKeyboardClickSignal(QString)),SLOT(keyboardInputEvent(QString)));
      ui->keyboardwidget->focusInKeyboard();
d0ee3ccc8   고영탁   버그 수정 및 비밀 번호 입력창 개발
30
31
32
33
34
35
36
37
38
  }
  
  ServicePassInputDlg::~ServicePassInputDlg()
  {
      delete ui;
  }
  
  void ServicePassInputDlg::on_ctrBtnOk_clicked()
  {
be2756ef5   고영탁   패스워드 입력 디자인 변경 외 1건
39
      if( QString(m_strInputPass) == QString(PASS_WORD)){
d66410abd   고영탁   에러 팝업 형태 변경
40
41
42
43
44
          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();
1f685a2a5   고영탁   설정 시스템 관리 기능 개발
45
          this->hide();
d66410abd   고영탁   에러 팝업 형태 변경
46
47
      }
      else {
d66410abd   고영탁   에러 팝업 형태 변경
48
          reject();
d0ee3ccc8   고영탁   버그 수정 및 비밀 번호 입력창 개발
49
      }
d0ee3ccc8   고영탁   버그 수정 및 비밀 번호 입력창 개발
50
51
52
53
54
55
  }
  
  void ServicePassInputDlg::on_ctrBtnCancel_clicked()
  {
      reject();
  }
be2756ef5   고영탁   패스워드 입력 디자인 변경 외 1건
56
63a45681f   고영탁   엔코더 기능 구현
57
58
59
60
61
  void ServicePassInputDlg::backspaceKeyPressEvent(){
      if(m_nCurInputCount>0) m_nCurInputCount--;
      m_strInputPass[m_nCurInputCount] = 0;
      qDebug() <<"back space input" << QString(m_strInputPass);
       ui->ctrProgressBar->setCurrentProgress(m_nCurInputCount);
be2756ef5   고영탁   패스워드 입력 디자인 변경 외 1건
62
  }
63a45681f   고영탁   엔코더 기능 구현
63
  void ServicePassInputDlg::keyboardInputEvent(QString strIn){
be2756ef5   고영탁   패스워드 입력 디자인 변경 외 1건
64
      if(m_nCurInputCount < MAX_PASSWORD){
63a45681f   고영탁   엔코더 기능 구현
65
              const QChar* in = strIn.constData();
be2756ef5   고영탁   패스워드 입력 디자인 변경 외 1건
66
67
68
              m_strInputPass[m_nCurInputCount++] = in[0];
              qDebug() <<"input event" << QString(m_strInputPass);
              ui->ctrProgressBar->setCurrentProgress(m_nCurInputCount);
63a45681f   고영탁   엔코더 기능 구현
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
      }
  }
  
  void ServicePassInputDlg::keyPressEvent(QKeyEvent *event){
      int i = 0;
      switch (event->key())
      {
      case 0x01000030:    // Turn left
          if(focusWidget() == ui->ctrProgressBar) ui->ctrBtnCancel->setFocus();
          else focusPreviousChild();
          break;
      case 0x01000031:    // Push
  
          break;
      case 0x01000032:    // Turn right
          if(focusWidget() == ui->ctrBtnCancel) ui->ctrProgressBar->setFocus();
          else focusNextChild();
  
          break;
      }
  }
  
  void ServicePassInputDlg::keyReleaseEvent(QKeyEvent *event){
      int i = 0;
      switch (event->key())
      {
      case 0x01000030:    // Turn left
          if(focusWidget() == ui->ctrProgressBar) ui->ctrBtnCancel->setFocus();
          else focusPreviousChild();
          break;
      case 0x01000031:    // Push
      {
          QPushButton *btn = qobject_cast<QPushButton*>(focusWidget());
          if(btn != NULL){
              btn->click();
be2756ef5   고영탁   패스워드 입력 디자인 변경 외 1건
104
          }
63a45681f   고영탁   엔코더 기능 구현
105
106
107
108
109
110
111
112
113
          else{
              ui->keyboardwidget->focusInKeyboard();
          }
          break;
      }
      case 0x01000032:    // Turn right
          if(focusWidget() == ui->ctrBtnCancel) ui->ctrProgressBar->setFocus();
          else focusNextChild();
          break;
be2756ef5   고영탁   패스워드 입력 디자인 변경 외 1건
114
115
      }
  }
63a45681f   고영탁   엔코더 기능 구현
116
117
118
119
120
121
122
123
  
  void ServicePassInputDlg::keyCancel_clicked(){
      ui->ctrBtnCancel->click();
  }
  
  void ServicePassInputDlg::keyEnter_clicked(){
      ui->ctrBtnOk->click();
  }