static bool output_matching_key_name(wchar_t wc) { char *name = sequence_name(wc); if (name) { std::fwprintf(stdout, L"bind -k %s 'do something'\n", name); free(name); return true; } return false; }
void MainWindow::ParseBigZipFunc(QFileInfo fi, MainWindow*/* Parent*/) { QFile infile(fi.absoluteFilePath()); infile.open(QIODevice::ReadOnly); QuaZip BigZip(&infile); BigZip.open(QuaZip::mdUnzip); QList<QuaZipFileInfo> ZipFI = BigZip.getFileInfoList(); QElapsedTimer* timer_parse = new QElapsedTimer(); QElapsedTimer* timer_author = new QElapsedTimer(); QElapsedTimer* timer_book = new QElapsedTimer(); int books_processed = 0; SmpLibDatabase* db = new SmpLibDatabase(m_sDBFile, m_sDbEngine); foreach(QuaZipFileInfo fi2, ZipFI) { if(!fi2.name.endsWith("fb2", Qt::CaseInsensitive)) continue; timer_parse->start(); BigZip.setCurrentFile(fi2.name); QuaZipFile file(&BigZip); file.open(QIODevice::ReadOnly); QByteArray BookData = file.readAll(); file.close(); QXmlStreamReader reader(BookData); QList<QString> first_name; QList<QString> last_name; QString book_title(""); QString genre(""); QString sequence_name(""); QString sequence_number = ""; bool bAuthorBlock = false; while (!reader.atEnd()) { QXmlStreamReader::TokenType token = reader.readNext(); /* If token is just StartDocument, we'll go to next.*/ if(token == QXmlStreamReader::StartDocument) { continue; } if (reader.isStartElement() && reader.name() == "author") bAuthorBlock = true; if (reader.isEndElement() && reader.name() == "author") bAuthorBlock = false; if (reader.isStartElement() && reader.name() == "first-name" && bAuthorBlock) { first_name.append(reader.readElementText().trimmed()); } else if (reader.isStartElement() && reader.name() == "last-name" && bAuthorBlock) { last_name.append(reader.readElementText().trimmed()); } else if (reader.isStartElement() && reader.name() == "book-title" && book_title.isEmpty()) { book_title = reader.readElementText(); } else if (reader.isStartElement() && reader.name() == "genre") { genre = reader.readElementText(); } else if (reader.isStartElement() && reader.name() == "sequence") { foreach(const QXmlStreamAttribute &attr, reader.attributes()) { if (attr.name().toString() == QLatin1String("name")) { sequence_name = attr.value().toString(); } else if (attr.name().toString() == QLatin1String("number")) { sequence_number = attr.value().toString(); } } } else if(reader.isEndElement() && reader.name() == "title-info") break; else continue; if (reader.hasError()) { } }