void KinectCloudFileWriter< PointCloudType >::waitForWriterToFinish()
{
	updateStatus(L"writing..");
	for (auto& thread : m_writerThreads){
		if (thread.joinable()){
			thread.join();
		}
	}
	updateStatus(L"");
	writingFinished();
}
Ejemplo n.º 2
0
void BlinkParser::parseXml()
{
    while (!m_reader->atEnd()) {
        switch(m_reader->readNext()) {
        case QXmlStreamReader::StartElement:
            if (m_reader->name().endsWith(QStringLiteral("db_id"))) {
                state = State::ID;
            } else if (m_reader->name() == QStringLiteral("series_image")) {
                state = State::ImgLink;
            } else if (m_reader->name() == QStringLiteral("myinfo")) {
                m_atUserInfo = true;
            } else if (m_atUserInfo) {
                // here we rip off the total progress that we need
                if (m_reader->name() == QStringLiteral("user_watching")
                        || m_reader->name() == QStringLiteral("user_reading")
                        || m_reader->name() == QStringLiteral("user_completed")
                        || m_reader->name() == QStringLiteral("user_onhold")
                        || m_reader->name() == QStringLiteral("user_dropped")
                        || m_reader->name() == QStringLiteral("user_plantowatch")
                        || m_reader->name() == QStringLiteral("user_plantoread")) {
                    m_total += m_reader->readElementText().toInt();
                }
            } else if (m_reader->name() == "error") {
                emit writingError(m_reader->readElementText());
                return;
            }
            break;
        case QXmlStreamReader::Characters:
            if (state == State::ID) {
                m_currentId += m_reader->text();
            } else if (state == State::ImgLink) {
                m_currentImgLink += m_reader->text();
            }
        case QXmlStreamReader::EndElement:
            if (m_reader->name().endsWith(QStringLiteral("db_id"))
                || m_reader->name() == QStringLiteral("series_image")) {
                state = State::Nothing;
            }
            if (m_reader->name() == QStringLiteral("anime")
                || m_reader->name() == QStringLiteral("manga")) {
                emit write(m_currentId, m_currentImgLink);
                emit currentProgress(++m_current);
                m_currentId.clear();
                m_currentImgLink.clear();
            }
            if (m_reader->name() == QStringLiteral("myinfo")) {
                m_atUserInfo = false;
                emit totalCount(m_total);
            }
            break;
        case QXmlStreamReader::EndDocument:
            m_reply->deleteLater();
            m_reply = nullptr;
            emit writingFinished();
        default:
            break;
        }
    }
    if (Q_UNLIKELY(m_reader->hasError()
                   && m_reader->error()
                    != QXmlStreamReader::PrematureEndOfDocumentError)) {
        emit writingError(m_reader->errorString());
        m_reply->abort();
        m_reply->deleteLater();
        m_reply = nullptr;
    }
}