diff --git a/ImmuNoattri.cpp b/ImmuNoattri.cpp index 34d4781..63299c3 100644 --- a/ImmuNoattri.cpp +++ b/ImmuNoattri.cpp @@ -2,6 +2,8 @@ #include +#include // https://git.golem.linux.it/golem/cnsparser + #include "ui_ImmuNoattri.h" bool decodeCodfis(const QString& input, QString& codfis, QString& anagrafica) { @@ -34,12 +36,17 @@ MainWindow::MainWindow(QWidget* parent) int registrati = sqliteInterface.count(); ui->lineRegistrati->setText(QString::number(registrati)); - ui->statusbar->showMessage("Passare tessera magnetica", 0); + on_statusbar_changed(); + + connect(&smartcard_check_timer, &QTimer::timeout, + this, &MainWindow::on_smartcard_check); + smartcard_check_timer.start(std::chrono::seconds(2)); } void MainWindow::on_statusbar_changed() { if ((ui->statusbar->currentMessage()).length() == 0) { ui->statusbar->setStyleSheet("background-color: auto;"); + ui->statusbar->showMessage("Passare la tessera magnetica sul lettore, inserire una smartcard nel lettore, o effettuare un inserimento manuale.", 0); } } @@ -98,4 +105,25 @@ void MainWindow::addVisitor(QString& codfis, QString& anagrafica) { } void MainWindow::closeEvent(QCloseEvent* event) { +} + +void MainWindow::on_smartcard_check() { + static QString last_codice_fiscale; + CNS cns; + + try { + cns.fromSmartCard(); + + if (cns.getCodiceFiscale() == last_codice_fiscale) return; + + last_codice_fiscale = cns.getCodiceFiscale(); + + QString codfis = cns.getCodiceFiscale(); + QString anagrafica = QString("%1 %2").arg(cns.getCognome()).arg(cns.getNome()); + + addVisitor(codfis, anagrafica); + } catch (Ex e) { + qDebug() << "no valid smartcard"; + //qDebug() << "[E] exception: " << e; + } } \ No newline at end of file diff --git a/ImmuNoattri.hpp b/ImmuNoattri.hpp index 7f5d658..945e11e 100644 --- a/ImmuNoattri.hpp +++ b/ImmuNoattri.hpp @@ -34,12 +34,14 @@ class MainWindow : public QMainWindow { void on_lineTessera_textEdited(const QString& text); void on_lineTessera_timer_timeout(); void on_statusbar_changed(); + void on_smartcard_check(); private: Ui::MainWindow* ui; std::unique_ptr wmanualInsert; QFile* csv_file; QTimer lineTessera_timer; + QTimer smartcard_check_timer; SqliteInterface sqliteInterface; void closeEvent(QCloseEvent* event); diff --git a/ImmuNoattri.pro b/ImmuNoattri.pro index c8e439e..1d07617 100644 --- a/ImmuNoattri.pro +++ b/ImmuNoattri.pro @@ -5,6 +5,11 @@ greaterThan(QT_MAJOR_VERSION, 4): QT += widgets TARGET = ImmuNoattri TEMPLATE = app +LIBS += -lcnsparser + +CONFIG += link_pkgconfig +PKGCONFIG += libpcsclite + SOURCES += main.cpp \ ImmuNoattri.cpp \ sqliteInterface.cpp \ diff --git a/README.md b/README.md index f5db286..d9a9603 100644 --- a/README.md +++ b/README.md @@ -3,6 +3,7 @@ ## Requisiti * libqt5sql5-sqlite * sqlite3 +* [cnsparser](https://git.golem.linux.it/golem/cnsparser) ## Database ```