#include "importconsumer.h" #include "numberreg.h" ImportConsumer::ImportConsumer(QList *buffer,QMutex *mutex) { this->buffer = buffer; this->stop = false; this->mutex = mutex; } ImportConsumer::~ImportConsumer() { qDebug()<stop = true; } void ImportConsumer::run() { while(true) { msleep(10); if(stop) break; this->segments.clear(); this->numbers.clear(); QStringList list; mutex->lock(); if(buffer->size()>0) list = buffer->takeLast(); mutex->unlock(); for(int j=0;jbuildType == NumberFromFileImport) { if(!this->checkLine(line)) continue; else lines.append(line); } else if(this->buildType == NumberFromFileExtract || this->buildType == NumberFromContent) { lines = this->extractFromLine(line); } for(int i=0;i0) emit bufferTaked(); } emit threadDestroy(); } QStringList ImportConsumer::extractFromLine(QString line) { QStringList numbers; int count = 0; int pos = 0; QRegExp rx = NumberReg::getCellPhoneReg(); while ((pos = rx.indexIn(line, pos)) != -1) { ++count; pos += rx.matchedLength(); numbers.append(rx.capturedTexts().at(0)); } return numbers; } bool ImportConsumer::checkLine(QString line) { if(line.length()!=11 || line<"13000000000" || line>"19999999999") { return false; } else { return true; } } void ImportConsumer::setBuildType(NumberBuildType buildType) { this->buildType = buildType; }