int main() { date startdate(1,1,1900,1); date enddate(31,12,2000); simpleEuler19 s(startdate, enddate); s.countFirstSundays(); char c; while (c = getchar()) { if (c == 'q')break; } return 0; }
bool MythTimeInputDialog::Create() { if (!CopyWindowFromBase("MythTimeInputDialog", this)) return false; MythUIText *messageText = NULL; MythUIButton *okButton = NULL; bool err = false; UIUtilE::Assign(this, messageText, "message", &err); UIUtilE::Assign(this, m_dateList, "dates", &err); UIUtilE::Assign(this, m_timeList, "times", &err); UIUtilE::Assign(this, okButton, "ok", &err); if (err) { LOG(VB_GENERAL, LOG_ERR, "Cannot load screen 'MythTimeInputDialog'"); return false; } m_dateList->SetVisible(false); m_timeList->SetVisible(false); MythUIButtonListItem *item; // Date if (kNoDate != (m_resolution & 0xF)) { const QDate startdate(m_startTime.toLocalTime().date()); QDate date(startdate); int limit = 0; if (m_resolution & kFutureDates) { limit += m_rangeLimit; } if (m_resolution & kPastDates) { limit += m_rangeLimit; date = date.addDays(0-m_rangeLimit); } QString text; int flags; bool selected = false; for (int x = 0; x <= limit; x++) { selected = false; if (m_resolution & kDay) { date = date.addDays(1); flags = MythDate::kDateFull | MythDate::kSimplify; if (m_rangeLimit >= 356) flags |= MythDate::kAddYear; text = MythDate::toString(date, flags); if (date == startdate) selected = true; } else if (m_resolution & kMonth) { date = date.addMonths(1); text = date.toString("MMM yyyy"); if ((date.month() == startdate.month()) && (date.year() == startdate.year())) selected = true; } else if (m_resolution & kYear) { date = date.addYears(1); text = date.toString("yyyy"); if (date.year() == startdate.year()) selected = true; } item = new MythUIButtonListItem(m_dateList, text, NULL, false); item->SetData(QVariant(date)); if (selected) m_dateList->SetItemCurrent(item); } m_dateList->SetVisible(true); } // Time if (kNoTime != (m_resolution & 0xF0)) { QDate startdate(m_startTime.toLocalTime().date()); QTime starttime(m_startTime.toLocalTime().time()); QTime time(0,0,0); QString text; bool selected = false; int limit = (m_resolution & kMinutes) ? (60 * 24) : 24; for (int x = 0; x < limit; x++) { selected = false; if (m_resolution & kMinutes) { time = time.addSecs(60); QDateTime dt = QDateTime(startdate, time, Qt::LocalTime); text = MythDate::toString(dt, MythDate::kTime); if (time == starttime) selected = true; } else if (m_resolution & kHours) { time = time.addSecs(60*60); text = time.toString("hh:00"); if (time.hour() == starttime.hour()) selected = true; } item = new MythUIButtonListItem(m_timeList, text, NULL, false); item->SetData(QVariant(time)); if (selected) m_timeList->SetItemCurrent(item); } m_timeList->SetVisible(true); } if (messageText && !m_message.isEmpty()) messageText->SetText(m_message); connect(okButton, SIGNAL(Clicked()), SLOT(okClicked())); BuildFocusList(); return true; }
bool QgsAuthPkcs12Edit::validateConfig() { // required components QString bundlepath( lePkcs12Bundle->text() ); bool bundlefound = QFile::exists( bundlepath ); QgsAuthGuiUtils::fileFound( bundlepath.isEmpty() || bundlefound, lePkcs12Bundle ); if ( !bundlefound ) { writePkiMessage( lePkcs12Msg, tr( "Missing components" ), Invalid ); return validityChange( false ); } if ( !QCA::isSupported( "pkcs12" ) ) { writePkiMessage( lePkcs12Msg, tr( "QCA library has no PKCS#12 support" ), Invalid ); return validityChange( false ); } // load the bundle QCA::SecureArray passarray; if ( !lePkcs12KeyPass->text().isEmpty() ) passarray = QCA::SecureArray( lePkcs12KeyPass->text().toUtf8() ); QCA::ConvertResult res; QCA::KeyBundle bundle( QCA::KeyBundle::fromFile( bundlepath, passarray, &res, QString( "qca-ossl" ) ) ); if ( res == QCA::ErrorFile ) { writePkiMessage( lePkcs12Msg, tr( "Failed to read bundle file" ), Invalid ); return validityChange( false ); } else if ( res == QCA::ErrorPassphrase ) { writePkiMessage( lePkcs12Msg, tr( "Incorrect bundle password" ), Invalid ); lePkcs12KeyPass->setPlaceholderText( QString( "Required passphrase" ) ); return validityChange( false ); } else if ( res == QCA::ErrorDecode ) { writePkiMessage( lePkcs12Msg, tr( "Failed to decode (try entering password)" ), Invalid ); return validityChange( false ); } if ( bundle.isNull() ) { writePkiMessage( lePkcs12Msg, tr( "Bundle empty or can not be loaded" ), Invalid ); return validityChange( false ); } // check for primary cert and that it is valid QCA::Certificate cert( bundle.certificateChain().primary() ); if ( cert.isNull() ) { writePkiMessage( lePkcs12Msg, tr( "Bundle client cert can not be loaded" ), Invalid ); return validityChange( false ); } // TODO: add more robust validation, including cert chain resolution QDateTime startdate( cert.notValidBefore() ); QDateTime enddate( cert.notValidAfter() ); QDateTime now( QDateTime::currentDateTime() ); bool bundlevalid = ( now >= startdate && now <= enddate ); writePkiMessage( lePkcs12Msg, tr( "%1 thru %2" ).arg( startdate.toString() ).arg( enddate.toString() ), ( bundlevalid ? Valid : Invalid ) ); return validityChange( bundlevalid ); }
bool QgsAuthPkiPathsEdit::validateConfig() { // required components QString certpath( lePkiPathsCert->text() ); QString keypath( lePkiPathsKey->text() ); bool certfound = QFile::exists( certpath ); bool keyfound = QFile::exists( keypath ); QgsAuthGuiUtils::fileFound( certpath.isEmpty() || certfound, lePkiPathsCert ); QgsAuthGuiUtils::fileFound( keypath.isEmpty() || keyfound, lePkiPathsKey ); if ( !certfound || !keyfound ) { writePkiMessage( lePkiPathsMsg, tr( "Missing components" ), Invalid ); return validityChange( false ); } // check for issue date validity, then notify status QSslCertificate cert; QFile file( certpath ); QFileInfo fileinfo( file ); QString ext( fileinfo.fileName().replace( fileinfo.completeBaseName(), "" ).toLower() ); if ( ext.isEmpty() ) { writePkiMessage( lePkiPathsMsg, tr( "Certificate file has no extension" ), Invalid ); return validityChange( false ); } QFile::OpenMode openflags( QIODevice::ReadOnly ); QSsl::EncodingFormat encformat( QSsl::Der ); if ( ext == ".pem" ) { openflags |= QIODevice::Text; encformat = QSsl::Pem; } if ( file.open( openflags ) ) { cert = QSslCertificate( file.readAll(), encformat ); file.close(); } else { writePkiMessage( lePkiPathsMsg, tr( "Failed to read certificate file" ), Invalid ); return validityChange( false ); } if ( cert.isNull() ) { writePkiMessage( lePkiPathsMsg, tr( "Failed to load certificate from file" ), Invalid ); return validityChange( false ); } bool certvalid = cert.isValid(); QDateTime startdate( cert.effectiveDate() ); QDateTime enddate( cert.expiryDate() ); writePkiMessage( lePkiPathsMsg, tr( "%1 thru %2" ).arg( startdate.toString(), enddate.toString() ), ( certvalid ? Valid : Invalid ) ); return validityChange( certvalid ); }