/*! @file @id $Id$ */ // 1 2 3 4 5 6 7 8 // 45678901234567890123456789012345678901234567890123456789012345678901234567890 #ifndef CARDGUI_HXX #define CARDGUI_HXX #include #include #include #include #if QT_VERSION >= 0x050000 #include #else #include #endif class CardGui: public QMainWindow, protected Ui_CardGui { Q_OBJECT; public: CardGui(QWidget* p=0): QMainWindow(p), _pwd(this) { setupUi(this); on__rescan_clicked(); } void resizeEvent(QResizeEvent* event) { QMainWindow::resizeEvent(event); if (_tree->model()) for (int i = 0; i < _tree->model()->columnCount(); ++i) _tree->resizeColumnToContents(i); } public Q_SLOTS: void on__rescan_clicked(bool=true) { static bool inRescan(false); if (inRescan) return; inRescan = true; try { delete _tree->model(); _tree->setModel(0); _card->clear(); pcsc::Connection::Strings readers(pcsc::Connection::scan()); for (pcsc::Connection::Strings::iterator r(readers.begin()); r!=readers.end(); ++r) _card->addItem(QString::fromStdString(*r)); } catch (...) { } inRescan = false; } void on__card_currentIndexChanged(int) { on__reload_clicked(); } void on__reload_clicked(bool=true) { try { delete _tree->model(); _tree->setModel(0); cardos::Commands cmd(pcsc::Connection::reader (_card->currentText().toStdString())); _tree->setModel(new CardGuiModel(cmd, "3f00")); } catch (...) { on__rescan_clicked(); } } void on__actionRestartPCSCD_triggered() { delete _tree->model(); _tree->setModel(0); if (_pwd.exec()) { _p.start("sudo -S service pcscd restart"); _p.write((_pwd.password()+"\n").toUtf8()); _p.closeWriteChannel(); if (!_p.waitForFinished()) QMessageBox::warning(this, tr("Restarting PCSC Daemon failed"), tr("

Restarting PCSC daemon" " failed with message:

" "\n
%1
") .arg(QString::fromUtf8 (_p.readAll()+"\n"+ _p.readAllStandardOutput()+"\n"+ _p.readAllStandardError()))); else QMessageBox::information(this, tr("Restarted PCSC Daemon"), tr("

Restarted PCSC daemon" " with message:

" "\n
%1
") .arg(QString::fromUtf8 (_p.readAll()+"\n"+ _p.readAllStandardOutput()+"\n"+ _p.readAllStandardError()))); } on__reload_clicked(); } protected: Password _pwd; QProcess _p; }; #endif