#include "numberprocessorproxy.h" #include "importproxy.h" NumberProcessorProxy::NumberProcessorProxy(NumberListModel *oldModel) { this->stop =false; this->oldModel = oldModel; } NumberProcessorProxy::~NumberProcessorProxy() { qDebug()<processType = processType; int size =this->oldModel->getSegments().size(); if(size>=100000) this->step1Progress = 50; else this->step1Progress = 50*((double)size/100000); this->step2Progress = 100-this->step1Progress; } void NumberProcessorProxy::setBlackList(NumberListModel *blackListModel) { this->blackListModel = blackListModel; } void NumberProcessorProxy::abort() { this->stop = true; } void NumberProcessorProxy::onOptimizeProgressCurrentUpdated(int current) { double s1 = current; double s2 = this->optimizeMaxProgress; emit progressUpdated(step1Progress*s1/s2); } void NumberProcessorProxy::onOptimizeProgressMaxUpdated(int max) { this->optimizeMaxProgress = max; } void NumberProcessorProxy::run() { emit progressMaxUpdated(100); segments = oldModel->getSegments(); numbers = oldModel->getNumbers(); newModel = new NumberListModel(); newModel->setNumberList(segments,numbers); QTime t; t.start(); QObject::connect(newModel,SIGNAL(optimizeProgressMaxUpdated(int)),this,SLOT(onOptimizeProgressMaxUpdated(int))); QObject::connect(newModel,SIGNAL(optimizeProgressCurrentUpdated(int)),this,SLOT(onOptimizeProgressCurrentUpdated(int))); newModel->mergeSegment(); QObject::disconnect(newModel,SIGNAL(optimizeProgressMaxUpdated(int)),this,SLOT(onOptimizeProgressMaxUpdated(int))); QObject::disconnect(newModel,SIGNAL(optimizeProgressCurrentUpdated(int)),this,SLOT(onOptimizeProgressCurrentUpdated(int))); qDebug()<<"Segment Merge Time :"<getSegments(); numbers = newModel->getNumbers(); for(int i=0;isetNumberList(segments,numbers); newModel->quickSortSegment(); } void NumberProcessorProxy::removeDuplicate() { segments = newModel->getSegments(); numbers = newModel->getNumbers(); for(int i=0;inumbers.at(i).size()-1) break; if(numbers.at(i).at(j)==numbers.at(i).at(k)) { numbers[i].removeAt(k); j--; } } double s1 = i+1; double s2 = segments.size(); emit progressUpdated(step1Progress+step2Progress*s1/s2); } newModel->setNumberList(segments,numbers); } void NumberProcessorProxy::removeNotPhone() { segments = newModel->getSegments(); numbers = newModel->getNumbers(); for(int i=0;isetNumberList(segments,numbers); } void NumberProcessorProxy::removeBlackList() { blackListModel->mergeSegment(); blackListModel->quickSortSegment(); QStringList blackListSegments = blackListModel->getSegments(); QList blackListNumbers = blackListModel->getNumbers(); //ºÚÃûµ¥ºÅÂëÈ¥ÖØ for(int i=0;iblackListNumbers.at(i).size()-1) break; if(blackListNumbers.at(i).at(j)==blackListNumbers.at(i).at(k)) { blackListNumbers[i].removeAt(k); j--; } } } segments = newModel->getSegments(); numbers = newModel->getNumbers(); int start = 0; for(int i=0;i=segments.size()) break; } delete blackListModel; newModel->setNumberList(segments,numbers); } QStringList NumberProcessorProxy::filterNumbers(QStringList source,QStringList filter) { source.sort(); filter.sort(); int start = 0; for(int i=0;i=source.size()) break; } return source; }