~nitrokey/nitrokey/release

« back to all changes in this revision

Viewing changes to src/ui/mainwindow.cpp

  • Committer: GitHub
  • Author(s): szszszsz
  • Date: 2016-09-27 08:54:14 UTC
  • mfrom: (326.1.3)
  • Revision ID: git-v1:7516ce879517d7ea304238184f601efa63b9c969
Merge pull request #153 from Nitrokey/143-windows_change_pin

Ask for device's reinsertion when its locked

Show diffs side-by-side

added added

removed removed

Lines of Context:
378
378
 
379
379
void MainWindow::overwrite_string(QString &str) { std::fill(str.begin(), str.end(), '*'); }
380
380
 
 
381
void MainWindow::showTrayMessage(QString message) {
 
382
    showTrayMessage("Nitrokey App", message, INFORMATION, 2000);
 
383
}
 
384
 
381
385
void MainWindow::showTrayMessage(const QString &title, const QString &msg,
382
386
                                 enum trayMessageType type, int timeout) {
383
387
#ifdef HAVE_LIBAPPINDICATOR
551
555
  ui->deleteUserPasswordCheckBox->setEnabled(false);
552
556
  ui->deleteUserPasswordCheckBox->setChecked(false);
553
557
 
554
 
  cryptostick->getStatus();
 
558
    translateDeviceStatusToUserMessage(cryptostick->getStatus());
555
559
  generateMenu();
556
560
 
557
561
  ui->PWS_EditPassword->setValidator(
688
692
  }
689
693
}
690
694
 
 
695
void MainWindow::translateDeviceStatusToUserMessage(const int getStatus){
 
696
    switch (getStatus) {
 
697
        case -10:
 
698
            // problems with communication, received CRC other than expected, try to reinitialize
 
699
            showTrayMessage(
 
700
                    tr("Detected some communication problems with the device. Reinitializing.")
 
701
            );
 
702
            break;
 
703
        case -11:
 
704
            // fatal error, cannot resume communication, ask user for reinsertion
 
705
            csApplet()->warningBox(
 
706
                tr("Device lock detected, please remove and insert the device again.\nIf problem will occur again please: \n1. Close the application\n2. Reinsert the device\n3. Wait 30 seconds and start application")
 
707
            );
 
708
            break;
 
709
        default:
 
710
            break;
 
711
    }
 
712
}
 
713
 
691
714
bool MainWindow::eventFilter(QObject *obj, QEvent *event) {
692
715
  if (event->type() == QEvent::MouseButtonPress) {
693
716
    QMouseEvent *mEvent = static_cast<QMouseEvent *>(event);
833
856
    if (false == cryptostick->activStick20) {
834
857
      ui->statusBar->showMessage(tr("Nitrokey Pro connected"));
835
858
      initialTimeReset(ret); // TODO make call just before getting TOTP instead of every connection
836
 
      cryptostick->getStatus();
 
859
        translateDeviceStatusToUserMessage(cryptostick->getStatus());
837
860
    } else
838
861
      ui->statusBar->showMessage(tr("Nitrokey Storage connected"));
839
862
 
861
884
      ui->statusBar->showMessage(tr("Nitrokey connected"));
862
885
      showTrayMessage(tr("Nitrokey connected"), "Nitrokey Pro", INFORMATION, TRAY_MSG_TIMEOUT);
863
886
      initialTimeReset(ret); // TODO make call just before getting TOTP instead of every connection
864
 
      cryptostick->getStatus();
 
887
        translateDeviceStatusToUserMessage(cryptostick->getStatus());
865
888
    } else {
866
889
      ui->statusBar->showMessage(tr("Nitrokey Storage connected"));
867
890
      showTrayMessage(tr("Nitrokey connected"), "Nitrokey Storage", INFORMATION, TRAY_MSG_TIMEOUT);
2173
2196
    cryptostick->getSlotConfigs();
2174
2197
    displayCurrentSlotConfig();
2175
2198
 
2176
 
    cryptostick->getStatus();
 
2199
      translateDeviceStatusToUserMessage(cryptostick->getStatus());
2177
2200
    displayCurrentGeneralConfig();
2178
2201
 
2179
2202
    SetupPasswordSafeConfig();
3218
3241
    QApplication::setOverrideCursor(QCursor(Qt::WaitCursor));
3219
3242
    Sleep::msleep(500);
3220
3243
    QApplication::restoreOverrideCursor();
3221
 
    cryptostick->getStatus();
 
3244
      translateDeviceStatusToUserMessage(cryptostick->getStatus());
3222
3245
    generateAllConfigs();
3223
3246
  } else {
3224
3247
      csApplet()->warningBox(tr("Nitrokey not connected!"));
3894
3917
  int ok;
3895
3918
  uint16_t lastInterval = 30;
3896
3919
 
3897
 
  cryptostick->getStatus();
 
3920
    translateDeviceStatusToUserMessage(cryptostick->getStatus());
3898
3921
  bool is_OTP_PIN_protected = cryptostick->otpPasswordConfig[0] == 1;
3899
3922
  if (is_OTP_PIN_protected) {
3900
3923
    if (!cryptostick->validUserPassword) {