// User selects move based off of available cards // Regame.turns damage of chosen move int pickMove(GlobalState* globalData) { int card = selectCard(globalData); printAttackMenu(globalData, card); globalData->keyStatus = 1; // Checks keypad input and outputs a message to user if incorrect while(0 != globalData->keyStatus) { // Keypad input is not valid if((10 > globalData->keypress) || (globalData->keypress > 12)) { globalData->keyStatus = 1; printAttackMenu(globalData, card); // Selected attack does nothing } else if (0 == globalData->selectMove[card][(globalData->keypress)-10]) { globalData->keyStatus = 2; printAttackMenu(globalData, card); // Input is valid and passes all checks } else { globalData->keyStatus = 0; } } // Thing to consider: User pressing a key multiple times??? // Regame.turn the amount of damage the move makes switch(globalData->keyPress) { case 0x0A: return globalData->selectMove[card][0]; break; case 0x0B: return globalData->selectMove[card][1]; break; case 0xC: return globalData->selectMove[card][2]; break; } }
void Dashboard::selectAll(){ if(view_as_skill){ unselectAll(); foreach(CardItem *card_item, card_items){ selectCard(".", true); pendings << card_item; } updatePending(); }
void pickMove(GlobalState* globalData) { static int displaymove = 0; if (game.monSel == 0) { selectCard(globalData); } else { if (displaymove == 0) { printAttackMenu(globalData, game.myMonster); prints(8, 5, WHITE, BLUE, "Please select an attack: ", 1); displaymove = 1; } else { if (((0x0A > globalData->keyPress) || (globalData->keyPress > 0x0C))) { globalData->keyStatus = 1; prints(8, 5, WHITE, BLUE, " ", 1); prints(8, 5, WHITE, BLUE, "Invalid attack input. Please select from the options below: ", 1); } else { displaymove = 0; globalData->keyStatus = 0; switch (globalData->keyPress) { case 0x0A: game.myMove = &game.myMonster->movelist[0]; break; case 0x0B: game.myMove = &game.myMonster->movelist[1]; break; case 0xC: game.myMove = &game.myMonster->movelist[2]; break; } game.monSel = 0; game.moveSel = 1; game.myMove->uses--; printGame(globalData); } } } }
MainWindow::MainWindow( QWidget *parent ) : QWidget( parent ) , cardsGroup( new QActionGroup( this ) ) , quitOnClose( false ) { setWindowFlags( Qt::Window|Qt::CustomizeWindowHint|Qt::WindowMinimizeButtonHint|Qt::WindowCloseButtonHint ); setAttribute( Qt::WA_DeleteOnClose, true ); setupUi( this ); cards->hide(); cards->hack(); languages->hack(); Settings s; // Mobile infoMobileCode->setValidator( new IKValidator( infoMobileCode ) ); infoMobileCode->setText( s.value( "Client/MobileCode" ).toString() ); infoMobileCell->setText( s.value( "Client/MobileNumber", "+372" ).toString() ); connect( infoMobileCode, SIGNAL(textEdited(QString)), SLOT(enableSign()) ); connect( infoMobileCell, SIGNAL(textEdited(QString)), SLOT(enableSign()) ); connect( infoSignMobile, SIGNAL(toggled(bool)), SLOT(showCardStatus()) ); // Buttons QButtonGroup *buttonGroup = new QButtonGroup( this ); buttonGroup->addButton( settings, HeadSettings ); buttonGroup->addButton( help, HeadHelp ); buttonGroup->addButton( about, HeadAbout ); buttonGroup->addButton( homeSign, HomeSign ); buttonGroup->addButton( homeView, HomeView ); buttonGroup->addButton( homeCrypt, HomeCrypt ); introNext = introButtons->addButton( tr( "Next" ), QDialogButtonBox::ActionRole ); buttonGroup->addButton( introNext, IntroNext ); buttonGroup->addButton( introButtons->button( QDialogButtonBox::Cancel ), IntroBack ); signButton = signButtons->addButton( tr("Sign"), QDialogButtonBox::AcceptRole ); buttonGroup->addButton( signButton, SignSign ); buttonGroup->addButton( signButtons->button( QDialogButtonBox::Cancel ), SignCancel ); viewAddSignature = viewButtons->addButton( tr("Add signature"), QDialogButtonBox::ActionRole ); buttonGroup->addButton( viewAddSignature, ViewAddSignature ); buttonGroup->addButton( viewButtons->button( QDialogButtonBox::Close ), ViewClose ); connect( buttonGroup, SIGNAL(buttonClicked(int)), SLOT(buttonClicked(int)) ); connect( infoCard, SIGNAL(linkActivated(QString)), SLOT(parseLink(QString)) ); connect( cards, SIGNAL(activated(QString)), qApp->signer(), SLOT(selectCard(QString)), Qt::QueuedConnection ); connect( qApp->signer(), SIGNAL(dataChanged()), SLOT(showCardStatus()) ); // Digidoc doc = new DigiDoc( this ); // Translations lang << "et" << "en" << "ru"; retranslate(); QActionGroup *langGroup = new QActionGroup( this ); for( int i = 0; i < lang.size(); ++i ) { QAction *a = langGroup->addAction( new QAction( langGroup ) ); a->setData( lang[i] ); a->setShortcut( Qt::CTRL + Qt::SHIFT + Qt::Key_0 + i ); } addActions( langGroup->actions() ); connect( langGroup, SIGNAL(triggered(QAction*)), SLOT(changeLang(QAction*)) ); connect( cardsGroup, SIGNAL(triggered(QAction*)), SLOT(changeCard(QAction*)) ); // Views signContentView->setColumnHidden( 2, true ); viewContentView->setColumnHidden( 3, true ); connect( signContentView, SIGNAL(remove(unsigned int)), SLOT(removeDocument(unsigned int)) ); connect( viewContentView, SIGNAL(remove(unsigned int)), SLOT(removeDocument(unsigned int)) ); }
//==================================== // getHeads //------------------------------------ int SaXManipulateCard::getHeads ( void ) { // .../ //! returns the number of configurable VGA heads This value may //! differ from the getCards() return value because there are //! possibly more than one head available on one card // ---- if (! mImport) { return -1; } int mBoards = getCards(); int mDevices = mImport -> getCount(); //==================================== // check for NoteBooks, assume *2 //------------------------------------ if ( isNoteBook() ) { return mBoards * 2; } //==================================== // get sysp card name //------------------------------------ SaXImportSysp* pCard = new SaXImportSysp (SYSP_CARD); pCard -> doImport(); QString mCardName; QTextOStream (&mCardName) << pCard->getItem("Vendor") << ":" << pCard->getItem("Device"); //==================================== // import CDB DB for profile names //------------------------------------ SaXProcess* pCDB = new SaXProcess(); pCDB -> start ( CDB_CARDS ); QDict< QDict<QString> > CDBData = pCDB -> getTablePointerCDB(); //==================================== // check profile names //------------------------------------ int headCount = 0; int realCount = 0; int currentCard = mCard; while (1) { if (realCount >= mDevices) { selectCard (currentCard); return headCount; } selectCard (realCount); if ( CDBData[mCardName] ) { QDict<QString> CDBTable = *CDBData[mCardName]; if (CDBTable["Profile"]) { QString mProfile = *CDBTable["Profile"]; if (mProfile == "NVidia_DualHead_DriverOptions") { headCount += 2; realCount += 1; continue; } if (mProfile == "NVidia_DualHead") { headCount += 2; realCount += 2; continue; } if (mProfile == "Radeon_DualHead_DriverOptions") { headCount += 2; realCount += 1; continue; } if (mProfile == "Radeon_DualHead") { headCount += 2; realCount += 2; continue; } if (mProfile == "FGLRX_DualHead_DriverOptions") { headCount += 2; realCount += 1; continue; } if (mProfile == "FGLRX_DualHead") { headCount += 2; realCount += 2; continue; } if (mProfile == "Matrox_G400") { headCount += 2; realCount += 2; continue; } if (mProfile == "Matrox_G450") { headCount += 2; realCount += 2; continue; } if (mProfile == "Matrox_G550") { headCount += 2; realCount += 2; continue; } } } realCount++; headCount++; } //==================================== // return board count, last chance //------------------------------------ return mBoards; }
MainWindow::MainWindow( QWidget *parent ) : QWidget( parent ) , cardsGroup( new QActionGroup( this ) ) { qRegisterMetaType<QSslCertificate>("QSslCertificate"); setupUi( this ); cards->hide(); setWindowFlags( Qt::Window | Qt::CustomizeWindowHint | Qt::WindowMinimizeButtonHint | Qt::WindowTitleHint ); #if QT_VERSION >= 0x040500 setWindowFlags( windowFlags() | Qt::WindowCloseButtonHint ); #else setWindowFlags( windowFlags() | Qt::WindowSystemMenuHint ); #endif QApplication::instance()->installEventFilter( this ); Common *common = new Common( this ); QDesktopServices::setUrlHandler( "browse", common, "browse" ); QDesktopServices::setUrlHandler( "mailto", common, "mailTo" ); QButtonGroup *buttonGroup = new QButtonGroup( this ); buttonGroup->addButton( settings, HeadSettings ); buttonGroup->addButton( help, HeadHelp ); buttonGroup->addButton( homeCreate, HomeCreate ); buttonGroup->addButton( homeView, HomeView ); introNext = introButtons->addButton( tr( "Next" ), QDialogButtonBox::ActionRole ); buttonGroup->addButton( introNext, IntroNext ); buttonGroup->addButton( introButtons->button( QDialogButtonBox::Cancel ), IntroBack ); viewCrypt = viewButtons->addButton( tr("Encrypt"), QDialogButtonBox::ActionRole ); buttonGroup->addButton( viewCrypt, ViewCrypt ); buttonGroup->addButton( viewButtons->button( QDialogButtonBox::Close ), ViewClose ); connect( buttonGroup, SIGNAL(buttonClicked(int)), SLOT(buttonClicked(int)) ); appTranslator = new QTranslator( this ); commonTranslator = new QTranslator( this ); qtTranslator = new QTranslator( this ); QApplication::instance()->installTranslator( appTranslator ); QApplication::instance()->installTranslator( commonTranslator ); QApplication::instance()->installTranslator( qtTranslator ); doc = new CryptoDoc( this ); connect( cards, SIGNAL(activated(QString)), doc, SLOT(selectCard(QString)) ); connect( doc, SIGNAL(error(QString,int,QString)), SLOT(showWarning(QString,int,QString)) ); connect( doc, SIGNAL(dataChanged()), SLOT(showCardStatus()) ); connect( viewContentView, SIGNAL(remove(int)), SLOT(removeDocument(int)) ); connect( viewContentView, SIGNAL(save(int,QString)), doc, SLOT(saveDocument(int,QString)) ); cards->hack(); languages->hack(); lang << "et" << "en" << "ru"; QString deflang; switch( QLocale().language() ) { case QLocale::English: deflang = "en"; break; case QLocale::Russian: deflang = "ru"; break; case QLocale::Estonian: default: deflang = "et"; break; } on_languages_activated( lang.indexOf( Settings().value( "Main/Language", deflang ).toString() ) ); QActionGroup *langGroup = new QActionGroup( this ); QAction *etAction = langGroup->addAction( new QAction( langGroup ) ); QAction *enAction = langGroup->addAction( new QAction( langGroup ) ); QAction *ruAction = langGroup->addAction( new QAction( langGroup ) ); etAction->setData( 0 ); enAction->setData( 1 ); ruAction->setData( 2 ); etAction->setShortcut( Qt::CTRL + Qt::SHIFT + Qt::Key_1 ); enAction->setShortcut( Qt::CTRL + Qt::SHIFT + Qt::Key_2 ); ruAction->setShortcut( Qt::CTRL + Qt::SHIFT + Qt::Key_3 ); addAction( etAction ); addAction( enAction ); addAction( ruAction ); connect( langGroup, SIGNAL(triggered(QAction*)), SLOT(changeLang(QAction*)) ); connect( cardsGroup, SIGNAL(triggered(QAction*)), SLOT(changeCard(QAction*)) ); close = new QAction( tr("Close"), this ); close->setShortcut( Qt::CTRL + Qt::Key_W ); connect( close, SIGNAL(triggered()), this, SLOT(closeDoc()) ); addAction( close ); #if defined(Q_OS_MAC) QMenuBar *bar = new QMenuBar; QMenu *menu = bar->addMenu( tr("&File") ); QAction *pref = menu->addAction( tr("Settings"), this, SLOT(showSettings()) ); pref->setMenuRole( QAction::PreferencesRole ); menu->addAction( close ); #endif QStringList args = qApp->arguments(); if( args.size() > 1 ) { args.removeAt( 0 ); params = args; buttonClicked( HomeCreate ); } }
MainWindow::MainWindow( QWidget *parent ) : QWidget( parent ) , cardsGroup( new QActionGroup( this ) ) , m_loaded( false ) , quitOnClose( false ) { qRegisterMetaType<QSslCertificate>("QSslCertificate"); setupUi( this ); cards->hide(); cards->hack(); languages->hack(); setWindowFlags( Qt::Window | Qt::CustomizeWindowHint | Qt::WindowMinimizeButtonHint | Qt::WindowTitleHint ); #if QT_VERSION >= 0x040500 setWindowFlags( windowFlags() | Qt::WindowCloseButtonHint ); #else setWindowFlags( windowFlags() | Qt::WindowSystemMenuHint ); #endif QApplication::instance()->installEventFilter( this ); Common *common = new Common( this ); QDesktopServices::setUrlHandler( "browse", common, "browse" ); QDesktopServices::setUrlHandler( "mailto", common, "mailTo" ); Settings s; // Mobile infoMobileCode->setValidator( new IKValidator( infoMobileCode ) ); infoMobileCode->setText( s.value( "Client/MobileCode" ).toString() ); infoMobileCell->setText( s.value( "Client/MobileNumber", "+372" ).toString() ); connect( infoMobileCode, SIGNAL(textEdited(QString)), SLOT(enableSign()) ); connect( infoMobileCell, SIGNAL(textEdited(QString)), SLOT(enableSign()) ); connect( infoSignMobile, SIGNAL(toggled(bool)), SLOT(showCardStatus()) ); // Buttons QButtonGroup *buttonGroup = new QButtonGroup( this ); buttonGroup->addButton( settings, HeadSettings ); buttonGroup->addButton( help, HeadHelp ); buttonGroup->addButton( homeSign, HomeSign ); buttonGroup->addButton( homeView, HomeView ); buttonGroup->addButton( homeCrypt, HomeCrypt ); introNext = introButtons->addButton( tr( "Next" ), QDialogButtonBox::ActionRole ); buttonGroup->addButton( introNext, IntroNext ); buttonGroup->addButton( introButtons->button( QDialogButtonBox::Cancel ), IntroBack ); signButton = signButtons->addButton( tr("Sign"), QDialogButtonBox::AcceptRole ); buttonGroup->addButton( signButton, SignSign ); buttonGroup->addButton( signButtons->button( QDialogButtonBox::Cancel ), SignCancel ); viewAddSignature = viewButtons->addButton( tr("Add signature"), QDialogButtonBox::ActionRole ); buttonGroup->addButton( viewAddSignature, ViewAddSignature ); buttonGroup->addButton( viewButtons->button( QDialogButtonBox::Close ), ViewClose ); connect( buttonGroup, SIGNAL(buttonClicked(int)), SLOT(buttonClicked(int)) ); connect( infoCard, SIGNAL(linkActivated(QString)), SLOT(parseLink(QString)) ); // Digidoc doc = new DigiDoc( this ); connect( cards, SIGNAL(activated(QString)), doc, SLOT(selectCard(QString)) ); connect( doc, SIGNAL(error(QString)), SLOT(showWarning(QString)) ); connect( doc, SIGNAL(dataChanged()), SLOT(showCardStatus()) ); m_loaded = doc->init(); // Translations appTranslator = new QTranslator( this ); commonTranslator = new QTranslator( this ); qtTranslator = new QTranslator( this ); QApplication::instance()->installTranslator( appTranslator ); QApplication::instance()->installTranslator( commonTranslator ); QApplication::instance()->installTranslator( qtTranslator ); lang << "et" << "en" << "ru"; QString deflang; switch( QLocale().language() ) { case QLocale::English: deflang = "en"; break; case QLocale::Russian: deflang = "ru"; break; case QLocale::Estonian: default: deflang = "et"; break; } on_languages_activated( lang.indexOf( s.value( "Main/Language", deflang ).toString() ) ); QActionGroup *langGroup = new QActionGroup( this ); QAction *etAction = langGroup->addAction( new QAction( langGroup ) ); QAction *enAction = langGroup->addAction( new QAction( langGroup ) ); QAction *ruAction = langGroup->addAction( new QAction( langGroup ) ); etAction->setData( 0 ); enAction->setData( 1 ); ruAction->setData( 2 ); etAction->setShortcut( Qt::CTRL + Qt::SHIFT + Qt::Key_1 ); enAction->setShortcut( Qt::CTRL + Qt::SHIFT + Qt::Key_2 ); ruAction->setShortcut( Qt::CTRL + Qt::SHIFT + Qt::Key_3 ); addAction( etAction ); addAction( enAction ); addAction( ruAction ); connect( langGroup, SIGNAL(triggered(QAction*)), SLOT(changeLang(QAction*)) ); connect( cardsGroup, SIGNAL(triggered(QAction*)), SLOT(changeCard(QAction*)) ); // Views signContentView->setColumnHidden( 2, true ); viewContentView->setColumnHidden( 3, true ); connect( signContentView, SIGNAL(remove(unsigned int)), SLOT(removeDocument(unsigned int)) ); connect( viewContentView, SIGNAL(remove(unsigned int)), SLOT(removeDocument(unsigned int)) ); // Actions closeAction = new QAction( tr("Close"), this ); closeAction->setShortcut( Qt::CTRL + Qt::Key_W ); connect( closeAction, SIGNAL(triggered()), this, SLOT(closeDoc()) ); addAction( closeAction ); #if defined(Q_OS_MAC) QMenuBar *bar = new QMenuBar; QMenu *menu = bar->addMenu( tr("&File") ); QAction *pref = menu->addAction( tr("Settings"), this, SLOT(showSettings()) ); pref->setMenuRole( QAction::PreferencesRole ); menu->addAction( closeAction ); #endif // Arguments QStringList args = qApp->arguments(); if( args.size() > 1 ) { quitOnClose = true; args.removeAt( 0 ); params = args; buttonClicked( HomeSign ); } }
MainWindow::MainWindow( const QStringList &_params ) : QWidget() , cardsGroup( new QActionGroup( this ) ) , quitOnClose( false ) { setAttribute( Qt::WA_DeleteOnClose, true ); setupUi( this ); cards->hide(); cards->hack(); languages->hack(); setWindowFlags( Qt::Window | Qt::CustomizeWindowHint | Qt::WindowMinimizeButtonHint ); #if QT_VERSION >= 0x040500 setWindowFlags( windowFlags() | Qt::WindowCloseButtonHint ); #else setWindowFlags( windowFlags() | Qt::WindowSystemMenuHint ); #endif Settings s; // Mobile infoMobileCode->setValidator( new IKValidator( infoMobileCode ) ); infoMobileCode->setText( s.value( "Client/MobileCode" ).toString() ); infoMobileCell->setText( s.value( "Client/MobileNumber", "+372" ).toString() ); connect( infoMobileCode, SIGNAL(textEdited(QString)), SLOT(enableSign()) ); connect( infoMobileCell, SIGNAL(textEdited(QString)), SLOT(enableSign()) ); connect( infoSignMobile, SIGNAL(toggled(bool)), SLOT(showCardStatus()) ); // Buttons QButtonGroup *buttonGroup = new QButtonGroup( this ); buttonGroup->addButton( settings, HeadSettings ); buttonGroup->addButton( help, HeadHelp ); buttonGroup->addButton( about, HeadAbout ); buttonGroup->addButton( homeSign, HomeSign ); buttonGroup->addButton( homeView, HomeView ); buttonGroup->addButton( homeCrypt, HomeCrypt ); introNext = introButtons->addButton( tr( "Next" ), QDialogButtonBox::ActionRole ); buttonGroup->addButton( introNext, IntroNext ); buttonGroup->addButton( introButtons->button( QDialogButtonBox::Cancel ), IntroBack ); signButton = signButtons->addButton( tr("Sign"), QDialogButtonBox::AcceptRole ); buttonGroup->addButton( signButton, SignSign ); buttonGroup->addButton( signButtons->button( QDialogButtonBox::Cancel ), SignCancel ); viewAddSignature = viewButtons->addButton( tr("Add signature"), QDialogButtonBox::ActionRole ); buttonGroup->addButton( viewAddSignature, ViewAddSignature ); buttonGroup->addButton( viewButtons->button( QDialogButtonBox::Close ), ViewClose ); connect( buttonGroup, SIGNAL(buttonClicked(int)), SLOT(buttonClicked(int)) ); connect( infoCard, SIGNAL(linkActivated(QString)), SLOT(parseLink(QString)) ); connect( cards, SIGNAL(activated(QString)), qApp->signer(), SLOT(selectCard(QString)), Qt::QueuedConnection ); connect( qApp, SIGNAL(dataChanged()), SLOT(showCardStatus()) ); // Digidoc doc = new DigiDoc( this ); // Translations lang << "et" << "en" << "ru"; QString deflang; switch( QLocale().language() ) { case QLocale::English: deflang = "en"; break; case QLocale::Russian: deflang = "ru"; break; case QLocale::Estonian: default: deflang = "et"; break; } on_languages_activated( lang.indexOf( s.value( "Main/Language", deflang ).toString() ) ); QActionGroup *langGroup = new QActionGroup( this ); QAction *etAction = langGroup->addAction( new QAction( langGroup ) ); QAction *enAction = langGroup->addAction( new QAction( langGroup ) ); QAction *ruAction = langGroup->addAction( new QAction( langGroup ) ); etAction->setData( 0 ); enAction->setData( 1 ); ruAction->setData( 2 ); etAction->setShortcut( Qt::CTRL + Qt::SHIFT + Qt::Key_1 ); enAction->setShortcut( Qt::CTRL + Qt::SHIFT + Qt::Key_2 ); ruAction->setShortcut( Qt::CTRL + Qt::SHIFT + Qt::Key_3 ); addAction( etAction ); addAction( enAction ); addAction( ruAction ); connect( langGroup, SIGNAL(triggered(QAction*)), SLOT(changeLang(QAction*)) ); connect( cardsGroup, SIGNAL(triggered(QAction*)), SLOT(changeCard(QAction*)) ); // Views signContentView->setColumnHidden( 2, true ); viewContentView->setColumnHidden( 3, true ); connect( signContentView, SIGNAL(remove(unsigned int)), SLOT(removeDocument(unsigned int)) ); connect( viewContentView, SIGNAL(remove(unsigned int)), SLOT(removeDocument(unsigned int)) ); if( !_params.empty() ) { quitOnClose = true; params = _params; buttonClicked( HomeSign ); } }
void QSmartCard::run() { while( !d->terminate ) { if( d->m.tryLock() ) { // Get list of available cards QMap<QString,std::string> cards; QStringList readers; try { EstEIDManager *card = new EstEIDManager(); std::vector<Token> list = card->getTokenList(); for( std::vector<Token>::const_iterator i = list.begin(); i != list.end(); ++i ) { qDebug() << i->first.c_str() << i->second.c_str(); readers << i->first.c_str(); if( !i->second.empty() ) cards[i->second.c_str()] = i->first.c_str(); } delete card; } catch( const std::runtime_error &e ) { qDebug() << Q_FUNC_INFO << e.what(); } // cardlist has changed QStringList order = cards.keys(); std::sort( order.begin(), order.end(), Common::cardsOrder ); bool update = d->t.cards() != order || d->t.readers() != readers; // check if selected card is still in slot if( !d->t.card().isEmpty() && !order.contains( d->t.card() ) ) { update = true; d->t.d = new QSmartCardDataPrivate(); } d->t.d->cards = order; d->t.d->readers = readers; // if none is selected select first from cardlist if( d->t.card().isEmpty() && !d->t.cards().isEmpty() ) selectCard( d->t.cards().first() ); // read card data if( d->t.cards().contains( d->t.card() ) && (!d->card || d->t.authCert().isNull() || d->t.signCert().isNull()) ) { update = true; try { QSmartCardDataPrivate *t = d->t.d; std::string reader = cards.value( t->card ); delete d->card; d->card = 0; d->card = new EstEidCard( reader ); d->card->setReaderLanguageId( d->lang ); d->updateCounters( t ); std::vector<std::string> data; d->card->readPersonalData( data, EstEidCard::SURNAME, EstEidCard::COMMENT4 ); ByteVec authcert = d->card->getAuthCert(); ByteVec signcert = d->card->getSignCert(); t->reader = reader.c_str(); t->pinpad = d->card->isSecureConnection(); t->version = QSmartCardData::CardVersion(d->card->getCardVersion()); try { if( t->version > QSmartCardData::VER_1_1 ) { d->card->sendApplicationIdentifierPreV3(); t->version = QSmartCardData::VER_3_0; } } catch( const std::runtime_error &e ) { qDebug() << Q_FUNC_INFO << "Card is not V3.0: " << e.what(); } t->data[QSmartCardData::SurName] = SslCertificate::formatName( d->encode( data[EstEidCard::SURNAME] ) ).trimmed(); t->data[QSmartCardData::FirstName] = SslCertificate::formatName( d->encode( data[EstEidCard::FIRSTNAME] ) ).trimmed(); t->data[QSmartCardData::MiddleName] = SslCertificate::formatName( d->encode( data[EstEidCard::MIDDLENAME] ) ).trimmed(); t->data[QSmartCardData::Sex] = d->encode( data[EstEidCard::SEX] ); t->data[QSmartCardData::Citizen] = d->encode( data[EstEidCard::CITIZEN] ); t->data[QSmartCardData::BirthDate] = QDate::fromString( d->encode( data[EstEidCard::BIRTHDATE] ), "dd.MM.yyyy" ); t->data[QSmartCardData::Id] = d->encode( data[EstEidCard::ID] ); t->data[QSmartCardData::DocumentId] = d->encode( data[EstEidCard::DOCUMENTID] ); t->data[QSmartCardData::Expiry] = QDate::fromString( d->encode( data[EstEidCard::EXPIRY] ), "dd.MM.yyyy" ); t->data[QSmartCardData::BirthPlace] = SslCertificate::formatName( d->encode( data[EstEidCard::BIRTHPLACE] ) ); t->data[QSmartCardData::IssueDate] = QDate::fromString( d->encode( data[EstEidCard::ISSUEDATE] ), "dd.MM.yyyy" ); t->data[QSmartCardData::ResidencePermit] = d->encode( data[EstEidCard::RESIDENCEPERMIT] ); t->data[QSmartCardData::Comment1] = d->encode( data[EstEidCard::COMMENT1] ); t->data[QSmartCardData::Comment2] = d->encode( data[EstEidCard::COMMENT2] ); t->data[QSmartCardData::Comment3] = d->encode( data[EstEidCard::COMMENT3] ); t->data[QSmartCardData::Comment4] = d->encode( data[EstEidCard::COMMENT4] ); if( !authcert.empty() ) t->authCert = QSslCertificate( QByteArray( (char*)&authcert[0], (int)authcert.size() ), QSsl::Der ); if( !signcert.empty() ) t->signCert = QSslCertificate( QByteArray( (char*)&signcert[0], (int)signcert.size() ), QSsl::Der ); QStringList mailaddresses = t->authCert.alternateSubjectNames().values( QSsl::EmailEntry ); t->data[QSmartCardData::Email] = !mailaddresses.isEmpty() ? mailaddresses.first() : ""; QStringList name = QStringList() << t->data[QSmartCardData::FirstName].toString() << t->data[QSmartCardData::MiddleName].toString() << t->data[QSmartCardData::SurName].toString(); name.removeAll( "" ); t->data[QSmartCardData::FullName] = name.join( " " ); if( t->authCert.type() & SslCertificate::DigiIDType ) { t->data[QSmartCardData::FullName] = t->authCert.toString( "GN SN" ); t->data[QSmartCardData::Id] = t->authCert.subjectInfo("serialNumber"); t->data[QSmartCardData::BirthDate] = IKValidator::birthDate( t->authCert.subjectInfo("serialNumber") ); t->data[QSmartCardData::IssueDate] = t->authCert.effectiveDate(); t->data[QSmartCardData::Expiry] = t->authCert.expiryDate(); } } catch( const std::runtime_error &e ) { qDebug() << Q_FUNC_INFO << "Error on loading card data: " << e.what(); } } // update data if something has changed if( update ) Q_EMIT dataChanged(); d->m.unlock(); } else if( d->e.isRunning() ) { emit eventStarted(); try { byte retries = 0; d->result = QSmartCard::UnknownError; switch( d->cmd ) { case QSmartCardPrivate::Change: switch( d->type ) { case QSmartCardData::Pin1Type: d->card->changeAuthPin( d->pin, d->old, retries ); break; case QSmartCardData::Pin2Type: d->card->changeSignPin( d->pin, d->old, retries ); break; case QSmartCardData::PukType: d->card->changePUK( d->pin, d->old, retries ); break; } d->updateCounters( d->t.d ); break; case QSmartCardPrivate::Unblock: switch( d->type ) { case QSmartCardData::Pin1Type: d->card->unblockAuthPin( d->pin, d->old, retries ); break; case QSmartCardData::Pin2Type: d->card->unblockSignPin( d->pin, d->old, retries ); break; default: break; } d->updateCounters( d->t.d ); break; case QSmartCardPrivate::Validate: switch( d->type ) { case QSmartCardData::Pin1Type: d->card->validateAuthPin( d->pin, retries ); break; case QSmartCardData::Pin2Type: d->card->validateSignPin( d->pin, retries ); break; case QSmartCardData::PukType: d->card->validatePuk( d->pin, retries ); break; default: break; } break; case QSmartCardPrivate::ValidateInternal: switch( d->type ) { case QSmartCardData::Pin1Type: d->card->enterPin( EstEidCard::PIN_AUTH, d->pin ); break; case QSmartCardData::Pin2Type: d->card->enterPin( EstEidCard::PIN_SIGN, d->pin ); break; case QSmartCardData::PukType: d->card->enterPin( EstEidCard::PUK, d->pin ); break; } break; default: break; } d->result = QSmartCard::NoError; } catch( const AuthError &e ) { d->result = d->handleAuthError( d->cmd == QSmartCardPrivate::Unblock ? QSmartCardData::PukType : d->type, e ); } catch( const std::runtime_error &e ) { qDebug() << Q_FUNC_INFO << e.what(); } d->pin.clear(); d->old.clear(); d->e.quit(); } sleep( 5 ); } }
void QSmartCard::reload() { selectCard( d->t.card() ); }
MainWindow::MainWindow( QWidget *parent ) : QWidget( parent ) , cardsGroup( new QActionGroup( this ) ) { setAttribute( Qt::WA_DeleteOnClose, true ); setupUi( this ); cards->hide(); cards->hack(); languages->hack(); setWindowFlags( Qt::Window | Qt::CustomizeWindowHint | Qt::WindowMinimizeButtonHint ); #if QT_VERSION >= 0x040500 setWindowFlags( windowFlags() | Qt::WindowCloseButtonHint ); #else setWindowFlags( windowFlags() | Qt::WindowSystemMenuHint ); #endif // Buttons QButtonGroup *buttonGroup = new QButtonGroup( this ); buttonGroup->addButton( settings, HeadSettings ); buttonGroup->addButton( help, HeadHelp ); buttonGroup->addButton( about, HeadAbout ); buttonGroup->addButton( homeCreate, HomeCreate ); buttonGroup->addButton( homeView, HomeView ); introNext = introButtons->addButton( tr( "Next" ), QDialogButtonBox::ActionRole ); buttonGroup->addButton( introNext, IntroNext ); buttonGroup->addButton( introButtons->button( QDialogButtonBox::Cancel ), IntroBack ); viewCrypt = viewButtons->addButton( tr("Encrypt"), QDialogButtonBox::ActionRole ); buttonGroup->addButton( viewCrypt, ViewCrypt ); buttonGroup->addButton( viewButtons->button( QDialogButtonBox::Close ), ViewClose ); connect( buttonGroup, SIGNAL(buttonClicked(int)), SLOT(buttonClicked(int)) ); connect( cards, SIGNAL(activated(QString)), qApp->poller(), SLOT(selectCard(QString)), Qt::QueuedConnection ); connect( qApp->poller(), SIGNAL(dataChanged()), SLOT(showCardStatus()) ); // Cryptodoc doc = new CryptoDoc( this ); // Translations lang << "et" << "en" << "ru"; retranslate(); QActionGroup *langGroup = new QActionGroup( this ); for( int i = 0; i < lang.size(); ++i ) { QAction *a = langGroup->addAction( new QAction( langGroup ) ); a->setData( lang[i] ); a->setShortcut( Qt::CTRL + Qt::SHIFT + Qt::Key_0 + i ); } addActions( langGroup->actions() ); connect( langGroup, SIGNAL(triggered(QAction*)), SLOT(changeLang(QAction*)) ); connect( cardsGroup, SIGNAL(triggered(QAction*)), SLOT(changeCard(QAction*)) ); // Views connect( viewContentView, SIGNAL(remove(int)), SLOT(removeDocument(int)) ); connect( viewContentView, SIGNAL(save(int,QString)), doc, SLOT(saveDocument(int,QString)) ); }
int straightflush(struct card hand[], int n) { struct card* handD = selectCard(hand,n,'d'); struct card* handC = selectCard(hand,n,'c'); struct card* handH = selectCard(hand,n,'h'); struct card* handS = selectCard(hand,n,'s'); int check = 0; int i, j; //check for d if (handD != NULL){ for (i = 0; handD[i+4].value != -1; i++) if (handD[i].value != 0 && handD[i+1].value != 0 && handD[i+2].value != 0 && handD[i+3].value != 0 && handD[i+4].value != 0) check = 1; if (check != 1) if (handD[0].value == 1 && handD[i].value == 10 && handD[i+1].value == 11 && handD[i+2].value == 12 && handD[i+3].value == 13) check = 1; } free(handD); if (check == 1) return check; //check for c if (handC != NULL){ for (i = 0; handC[i+4].value != -1; i++) if (handC[i].value != 0 && handC[i+1].value != 0 && handC[i+2].value != 0 && handC[i+3].value != 0 && handC[i+4].value != 0) check = 1; if (check != 1) if (handC[0].value == 1 && handC[i].value == 10 && handC[i+1].value == 11 && handC[i+2].value == 12 && handC[i+3].value == 13) check = 1; } free(handC); if (check == 1) return check; //check for h if (handH != NULL){ for (i = 0; handH[i+4].value != -1; i++) if (handH[i].value != 0 && handH[i+1].value != 0 && handH[i+2].value != 0 && handH[i+3].value != 0 && handH[i+4].value != 0) check = 1; if (check != 1) if (handH[0].value == 1 && handH[i].value == 10 && handH[i+1].value == 11 && handH[i+2].value == 12 && handH[i+3].value == 13) check = 1; } free(handH); if (check == 1) return check; //check for s if (handS != NULL){ for (i = 0; handS[i+4].value != -1; i++) if (handS[i].value != 0 && handS[i+1].value != 0 && handS[i+2].value != 0 && handS[i+3].value != 0 && handS[i+4].value != 0) check = 1; if (check != 1) if (handS[0].value == 1 && handS[i].value == 10 && handS[i+1].value == 11 && handS[i+2].value == 12 && handS[i+3].value == 13) check = 1; } free(handS); if (check == 1) return check; return check; }