| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171 |
- #include "numbermove.h"
- NumberMove::NumberMove(QStringList sourceSegments, QList<QStringList> sourceNumbers, NumberMoveType moveType)
- {
- this->sourceSegments = sourceSegments;
- this->sourceNumbers = sourceNumbers;
- this->moveType = moveType;
- this->stop = false;
- }
- NumberMove::~NumberMove()
- {
- qDebug()<<QDateTime::currentDateTime().toString("yyyy-MM-dd HH:mm:ss")\
- <<"NumberMove Destroyed.";
- }
- void NumberMove::setRange(QString range1, QString range2)
- {
- this->range1 = range1;
- this->range2 = range2;
- }
- void NumberMove::setRegex(QList<QRegExp> regexpList)
- {
- this->regexpList = regexpList;
- }
- void NumberMove::abort()
- {
- this->stop = true;
- }
- void NumberMove::run()
- {
- switch(moveType)
- {
- case MoveByAll:
- moveByAll();
- break;
- case MoveByRange:
- moveByRange();
- break;
- case MoveByRegex:
- moveByRegex();
- break;
- default:
- break;
- }
- }
- void NumberMove::moveByRange()
- {
- QString number;
- QString segment;
- destSegments = sourceSegments;
- destNumbers = sourceNumbers ;
- for(int i=0;i<sourceSegments.size();i++)
- {
- destNumbers[i].clear();
- }
- for(int i=0;i<this->sourceSegments.size();i++)
- {
- if(stop)
- return ;
- msleep(10);
- segment = sourceSegments.at(i);
- for(int j=0;j<sourceNumbers.at(i).size();j++)
- {
- number = segment+this->sourceNumbers.at(i).at(j);
- if (number>=this->range1 && number<=range2)
- {
- QString tail = this->sourceNumbers.at(i).at(j);
- destNumbers[i]<<tail;
- this->sourceNumbers[i].removeAt(j);
- j--;
- }
- }
- }
- for(int i=0;i<sourceSegments.size();i++)
- {
- if(sourceNumbers[i].size()==0)
- {
- sourceSegments.removeAt(i);
- sourceNumbers.removeAt(i);
- i--;
- }
- }
- for(int i=0;i<destSegments.size();i++)
- {
- if(destNumbers[i].size()==0)
- {
- destSegments.removeAt(i);
- destNumbers.removeAt(i);
- i--;
- }
- }
- emit childTaskFinished(sourceSegments,sourceNumbers,destSegments,destNumbers);
- }
- void NumberMove::moveByAll()
- {
- destSegments = sourceSegments;
- destNumbers = sourceNumbers ;
- sourceSegments.clear();
- sourceNumbers.clear();
- emit childTaskFinished(sourceSegments,sourceNumbers,destSegments,destNumbers);
- }
- void NumberMove::moveByRegex()
- {
- QString number;
- QString segment;
- destSegments = sourceSegments;
- destNumbers = sourceNumbers ;
- for(int i=0;i<sourceSegments.size();i++)
- {
- destNumbers[i].clear();
- }
- for(int i=0;i<this->sourceSegments.size();i++)
- {
- if(stop)
- return ;
- msleep(10);
- segment = sourceSegments.at(i);
- for(int j=0;j<sourceNumbers.at(i).size();j++)
- {
- number = segment+this->sourceNumbers.at(i).at(j);
- bool allmatch = true ;
- for(int k=0;k<this->regexpList.size();k++)
- {
- //qDebug()<<regexpList.at(k).pattern();
- QRegExp regexp = this->regexpList.at(k);
- if(regexp.exactMatch(number))
- {
- continue;
- }
- else
- {
- allmatch = false ;
- break;
- }
- }
- if (allmatch)
- {
- QString tail = this->sourceNumbers.at(i).at(j);
- destNumbers[i]<<tail;
- this->sourceNumbers[i].removeAt(j);
- j--;
- }
- }
- }
- for(int i=0;i<sourceSegments.size();i++)
- {
- if(sourceNumbers[i].size()==0)
- {
- sourceSegments.removeAt(i);
- sourceNumbers.removeAt(i);
- i--;
- }
- }
- for(int i=0;i<destSegments.size();i++)
- {
- if(destNumbers[i].size()==0)
- {
- destSegments.removeAt(i);
- destNumbers.removeAt(i);
- i--;
- }
- }
- emit childTaskFinished(sourceSegments,sourceNumbers,destSegments,destNumbers);
- }
|