void SmileyPickerController::parse(const QString &page, int startingPosition) { m_Emoticons.clear(); QRegExp smiley("<img src=\"([^\"]+)\" alt=\"([^\"]+)\".*/>"); qDebug() << "start parsing"; smiley.setCaseSensitivity(Qt::CaseSensitive); smiley.setMinimal(true); int nbSmileyPage = 0; int pos = startingPosition; while((pos = smiley.indexIn(page, pos)) != -1 && nbSmileyPage < 60) { qDebug() << smiley.cap(2); m_Mutex.lockForWrite(); Emoticon *e = new Emoticon; e->setTag(smiley.cap(2)); e->setDistUrl(smiley.cap(1)); m_Emoticons.push_back(e); m_Mutex.unlock(); WebResourceManager::get()->getImage(smiley.cap(1)); pos += smiley.matchedLength(); ++nbSmileyPage; } qDebug() << "end parsing"; // ------------------------------------------------------------- // build index in file for next/previous nav. if(pos != -1) { bool indexFound = false; for(int i = 0 ; i < m_IndexSubpagesInFile.length() ; ++i) if(m_IndexSubpagesInFile[i] == pos) { indexFound = true; break; } if(!indexFound) { m_IndexSubpagesInFile.push_back(pos); } } emit complete(); }