#include "numberbuilder.h" NumberBuilder::NumberBuilder(QStringList list,NumberBuildType buildType) { this->stop = false; this->buildType = buildType; this->list = list; } void NumberBuilder::setRegList(QStringList regList) { this->regexp_list = regList; } NumberBuilder::~NumberBuilder() { qDebug()<<"NumberBuilder dead"; } void NumberBuilder::abort() { this->stop = true; } void NumberBuilder::run() { switch(buildType) { case NumberFromSegments: buildFromSegments(); break; case NumberFromFileImport: importFromFiles(); break; case NumberFromFileExtract: extractFromFiles(); break; case NumberFromContent: extractFromContents(); break; case NumberFromSolution: buildFromSolution(); break; default: break; } deleteLater(); } void NumberBuilder::buildFromSegments() { segments = list; int howmany = segments.size(); for(int i=0;i < howmany ; i++) { if(!stop) { QStringList numberList; for(int j=0; j<10000; j++) { QString tail = "000"+QString::number(j); numberList << tail.right(4); } this->numbers.append(numberList); numberList.clear(); } else { return ; } } emit childTaskFinished(segments,numbers); } void NumberBuilder::buildFromSolution() { segments = list; int howmany = segments.size(); for(int i=0;i < howmany ; i++) { if(!stop) { QStringList numberList; for(int j=0; j<10000; j++) { QString tail = "000"+QString::number(j); for(int k=0;kregexp_list.size();k++) { QRegExp rx(regexp_list.at(k)); if(rx.exactMatch(segments.at(i)+tail.right(4))) { numberList << tail.right(4); break; } else continue; } } this->numbers.append(numberList); numberList.clear(); } else { return ; } } emit childTaskFinished(segments,numbers); } void NumberBuilder::importFromList() { for(int j=0;j