示例#1
0
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;

}