numberoutorder.cpp 1.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940
  1. #include "numberoutorder.h"
  2. NumberOutOrder::NumberOutOrder(NumberListModel *oldModel)
  3. {
  4. this->stop =false;
  5. this->oldModel = oldModel;
  6. }
  7. NumberOutOrder::~NumberOutOrder()
  8. {
  9. qDebug()<<QDateTime::currentDateTime().toString("yyyy-MM-dd HH:mm:ss")\
  10. <<"NumberOutOrder Destroyed.";
  11. }
  12. void NumberOutOrder::abort()
  13. {
  14. this->stop = true;
  15. }
  16. void NumberOutOrder::run()
  17. {
  18. newModel = new NumberListModel();
  19. QTime t = QTime::currentTime();
  20. qsrand(t.msec()+t.second()*1000);
  21. QList<int> orderIndex = oldModel->getOrderIndex();
  22. emit progressMaxUpdated(oldModel->getCount());
  23. for(int i=0;i<oldModel->getCount();i++)
  24. {
  25. if(stop)
  26. break;
  27. if(i%1000000==0 ||i==oldModel->getCount()-1 )
  28. {
  29. emit progressUpdated(i+1);
  30. }
  31. int n = qrand()%(oldModel->getCount()-1);
  32. int tmp = orderIndex.at(i);
  33. orderIndex[i] = orderIndex[n];
  34. orderIndex[n] = tmp;
  35. }
  36. newModel->setNumberList(oldModel->getSegments(),oldModel->getNumbers());
  37. newModel->setOrderIndex(orderIndex);
  38. emit numberProcessed(newModel);
  39. }