bool MyFb2File::GetTranslators(author_array &translators) { bool retVal = false; int pos = 0; if (m_titleInfo.length() == 0) { m_titleInfo = GetXmlTag(titleInfoTag, pos); } if (m_titleInfo.length() == 0) { return retVal; } translators.clear(); pos = 0; QString curFirstName = tr(""); QString curLastName = tr(""); QString curMiddleName = tr(""); QString curAuthor = tr(""); bool firstAuthor = true; while ((curAuthor = GetXmlTag(translatorTag, m_titleInfo, pos)).length() > 0) { int authorPos = 0; curFirstName = GetXmlTag(firstNameTag, curAuthor, authorPos); authorPos = 0; curLastName = GetXmlTag(lastNameTag, curAuthor, authorPos); authorPos = 0; curMiddleName = GetXmlTag(middleNameTag, curAuthor, authorPos); if ((curFirstName.length() + curLastName.length() + curMiddleName.length()) > 0) { author a; a.firstname = Utf8toAnsi(curFirstName); a.surname = Utf8toAnsi(curLastName); a.middlename = Utf8toAnsi(curMiddleName); translators.push_back(a); retVal = true; } } return retVal; }
QString MyFb2File::Utf8toAnsi( const QString &utf8 ) { QString retVal = ""; char * rv = Utf8toAnsi(utf8.toStdString().c_str()); if (rv != NULL) { retVal = rv; } return retVal; }
QString MyFb2File::GetAnnotation(void) { QString retVal = tr(""); int pos = 0; if (m_titleInfo.length() == 0) { m_titleInfo = GetXmlTag(titleInfoTag, pos); } if (m_titleInfo.length() == 0) { return retVal; } pos = 0; retVal = Utf8toAnsi(GetXmlTag(annotationTag, m_titleInfo, pos)); return retVal; }
QString MyFb2File::GetLanguageOrig(void) { QString retVal = tr(""); int pos = 0; if (m_titleInfo.length() == 0) { m_titleInfo = GetXmlTag(titleInfoTag, pos); } if (m_titleInfo.length() == 0) { return retVal; } pos = 0; retVal = Utf8toAnsi(GetXmlTag(langOrigTag, m_titleInfo, pos)); return retVal; }
bool MyFb2File::GetGenres(string_array &genres) { bool retVal = false; int pos = 0; if (m_titleInfo.length() == 0) { m_titleInfo = GetXmlTag(titleInfoTag, pos); } if (m_titleInfo.length() == 0) { return retVal; } genres.clear(); pos = 0; QString curGenre = tr(""); while ((curGenre = GetXmlTag(genreTag, m_titleInfo, pos)).length() > 0) { int comma = curGenre.indexOf(','); if (comma != -1) { int pos = 0; QString g = tr(""); while ((comma = curGenre.indexOf(',', pos)) != -1) { int beg = pos, end = comma; while (curGenre.mid(beg, 1) == tr(" ")) { beg++; } while (curGenre.mid(end - 1, 1) == tr(" ")) { end--; } if ((end - beg) > 0) { g = curGenre.mid(beg, end - beg); genres.push_back(Utf8toAnsi(g)); } pos = comma + 1; } int beg = pos, end = curGenre.length(); while (curGenre.mid(beg, 1) == tr(" ")) { beg++; } while (curGenre.mid(end - 1, 1) == tr(" ")) { end--; } if ((end - beg) > 0) { g = curGenre.mid(beg, end - beg); genres.push_back(Utf8toAnsi(g)); } } else { genres.push_back(Utf8toAnsi(curGenre)); } retVal = true; } return retVal; }
bool MyFb2File::GetSerie(QString &serieName, int &serieNum) { bool retVal = false; int pos = 0; if (m_titleInfo.length() == 0) { m_titleInfo = GetXmlTag(titleInfoTag, pos); } if (m_titleInfo.length() == 0) { return retVal; } int start; // search for sequence tag if ((start = m_titleInfo.indexOf(serieTag)) == -1) { // no series serieName.clear(); serieNum = 0; return retVal; } // search for name tag int nameStart, numStart; if ((nameStart = m_titleInfo.indexOf(serieNameTag, start)) == -1) { // no series serieName.clear(); serieNum = 0; return retVal; } int nameQuote1, nameQuote2, numQuote1, numQuote2; if ((nameQuote1 = m_titleInfo.indexOf('\"', nameStart)) == -1) { // no series serieName.clear(); serieNum = 0; return retVal; } if ((nameQuote2 = m_titleInfo.indexOf('\"', nameQuote1 + 1)) == -1) { // no series serieName.clear(); serieNum = 0; return retVal; } if ((numStart = m_titleInfo.indexOf(serieNumTag, start)) == -1) { // no series serieName.clear(); serieNum = 0; return retVal; } if ((numQuote1 = m_titleInfo.indexOf('\"', numStart)) == -1) { // no series serieName.clear(); serieNum = 0; return retVal; } if ((numQuote2 = m_titleInfo.indexOf('\"', numQuote1 + 1)) == -1) { // no series serieName.clear(); serieNum = 0; return retVal; } if ((nameQuote2 - nameQuote1 - 1) <= 0) { serieName.clear(); serieNum = 0; return retVal; } else { QString name = m_titleInfo.mid(nameQuote1 + 1, nameQuote2 - nameQuote1 - 1); serieName = Utf8toAnsi(name); } if ((numQuote2 - numQuote1 - 1) <= 0) { serieNum = 0; } else { QString num = m_titleInfo.mid(numQuote1 + 1, numQuote2 - numQuote1 - 1); bool ok; serieNum = num.toInt(&ok); if (!ok) { serieNum = 0; } } retVal = true; return retVal; }
void BlobMgmt::ProcessComboSelection(wyString& comboselparam) { wyChar *ansistr = NULL; wyChar *utf8str = NULL; wyWChar *ucs2str = NULL; wyInt32 lenucs2 = 0, i; if(comboselparam.CompareI("US-ascii/Ansi ") == 0 && m_isutf8 == wyTrue) { ansistr = Utf8toAnsi(m_blobdata.GetString(), m_blobdata.GetLength()); m_piub->m_data = ansistr; m_piub->m_datasize = strlen(ansistr); m_piub->m_isnull = wyFalse; m_piub->m_ischanged = wyTrue; } else if(comboselparam.CompareI("UTF-8") == 0 && m_isansi == wyTrue) { utf8str = AnsitoUtf8(m_blobdata.GetString(), m_blobdata.GetLength()); m_piub->m_data = utf8str; m_piub->m_datasize = strlen(utf8str); m_piub->m_isnull = wyFalse; m_piub->m_ischanged = wyTrue; } else if(comboselparam.CompareI("ucs2") == 0 && m_isutf8 == wyTrue) { ucs2str = Utf8toUcs2(m_blobdata.GetString(), m_blobdata.GetLength()); lenucs2 = wcslen(ucs2str); memset(m_piub->m_data, 0, strlen(m_piub->m_data)); for(i=0; i < lenucs2; i++) memcpy(m_piub->m_data + i, ucs2str + i, 1); m_piub->m_datasize = lenucs2; m_piub->m_isnull = wyFalse; m_piub->m_ischanged = wyTrue; } else if(comboselparam.CompareI("US-ascii/Ansi ") == 0 && m_isucs2 == wyTrue) { ansistr = Ucs2toAnsi(m_blobdata.GetString(), m_blobdata.GetLength()); m_piub->m_data = ansistr; m_piub->m_datasize = strlen(ansistr); m_piub->m_isnull = wyFalse; m_piub->m_ischanged = wyTrue; } else if(comboselparam.CompareI("UTF-8") == 0 && m_isucs2 == wyTrue) { utf8str = Ucs2toUtf8(m_blobdata.GetString(), m_blobdata.GetLength()); m_piub->m_data = utf8str; m_piub->m_datasize = strlen(utf8str); m_piub->m_isnull = wyFalse; m_piub->m_ischanged = wyTrue; } else if(comboselparam.CompareI("ucs2") == 0 && m_isansi == wyTrue) { ucs2str = AnsitoUcs2(m_blobdata.GetString(), m_blobdata.GetLength()); lenucs2 = wcslen(ucs2str); memcpy(m_piub->m_data, ucs2str, lenucs2); for(i=0; i < lenucs2; i++) memcpy(m_piub->m_data + i, ucs2str + i, 1); m_piub->m_datasize = lenucs2; m_piub->m_isnull = wyFalse; m_piub->m_ischanged = wyTrue; } }