Ejemplo n.º 1
0
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();

}