numbercreate.cpp 1.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465
  1. #include "numbercreate.h"
  2. NumberCreate::NumberCreate(NumberListModel *model)
  3. {
  4. this->oldModel = model;
  5. this->stop = false;
  6. }
  7. void NumberCreate::abort()
  8. {
  9. this->stop = true;
  10. }
  11. NumberCreate::~NumberCreate()
  12. {
  13. qDebug()<<QDateTime::currentDateTime().toString("yyyy-MM-dd HH:mm:ss")\
  14. <<"NumberCreate Destroyed.";
  15. }
  16. void NumberCreate::setFilterType(int type)
  17. {
  18. this->type = type;
  19. }
  20. void NumberCreate::setSegments(QStringList segments)
  21. {
  22. this->segments = segments;
  23. }
  24. void NumberCreate::setFilters(QMultiMap<int, QString> rules)
  25. {
  26. this->rules = rules;
  27. }
  28. void NumberCreate::run()
  29. {
  30. emit progressMaxUpdated(this->segments.size());
  31. QStringList last4Rules = this->rules.values(0);
  32. QStringList matchedlast4Numbers;
  33. for(int i=0;i<10000;i++)
  34. {
  35. QString last4 = QString("0000" + QString::number(i)).right(4);
  36. for(int j=0;j<last4Rules.size();j++)
  37. {
  38. QRegExp regex(last4Rules.at(j));
  39. if(regex.exactMatch(last4))
  40. {
  41. matchedlast4Numbers << last4;
  42. break;
  43. }
  44. }
  45. }
  46. for(int i=0;i<segments.size();i++){
  47. numbers.append(matchedlast4Numbers);
  48. emit progressUpdated(i+1);
  49. }
  50. appendModel();
  51. emit numberCreated(newModel);
  52. }
  53. void NumberCreate::appendModel()
  54. {
  55. newModel = new NumberListModel();
  56. segments.append(oldModel->getSegments());
  57. numbers.append(oldModel->getNumbers());
  58. newModel->setNumberList(segments,numbers);
  59. }