requestfromserver.cpp 2.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485
  1. #include "requestfromserver.h"
  2. #include "ui_requestfromserver.h"
  3. #include <QDebug>
  4. #include <QPushButton>
  5. Q_DECLARE_METATYPE( std::vector< std::vector< cv::Point > >* )
  6. RequestFromServerThread::RequestFromServerThread(QString serverAddress, Frame *f)
  7. : QThread(),
  8. serverAddress( serverAddress ),
  9. f( f )
  10. {
  11. this->client = 0;
  12. this->setTerminationEnabled();
  13. }
  14. // Fragt die Daten vom Server ab
  15. void RequestFromServerThread::run()
  16. {
  17. try {
  18. DetectionClient client;
  19. this->client = &client;
  20. this->setTerminationEnabled();
  21. client.connect( serverAddress.toStdString() );
  22. std::vector< std::vector< cv::Point > > *objects = client.getContours( f->getImageMatrix() );
  23. QThread::sleep(1);
  24. threadReady( objects );
  25. this->client = 0;
  26. return;
  27. }
  28. catch( ... )
  29. {
  30. qDebug() << "no connection to Server";
  31. }
  32. QThread::sleep(1);
  33. threadReady( new std::vector< std::vector< cv::Point > >() );
  34. this->client = 0;
  35. }
  36. // Inhalt der RequestFromServer Klasse
  37. //-------------------------------------
  38. RequestFromServer::RequestFromServer(QString serverAddress, Frame *f, QWidget *parent) :
  39. QDialog(parent),
  40. ui(new Ui::RequestFromServer),
  41. rfst( new RequestFromServerThread( serverAddress, f ) )
  42. {
  43. ui->setupUi(this);
  44. connect(rfst, &RequestFromServerThread::threadReady, this, &RequestFromServer::onThreadReady);
  45. rfst->start();
  46. }
  47. RequestFromServer::~RequestFromServer()
  48. {
  49. delete rfst;
  50. delete ui;
  51. }
  52. std::vector< std::vector< cv::Point > > RequestFromServer::getObjects()
  53. {
  54. return objects;
  55. }
  56. // Abfragen von Vorabannotationen abbrechen
  57. void RequestFromServer::on_abbrechen_clicked()
  58. {
  59. disconnect(rfst, &RequestFromServerThread::threadReady, this, &RequestFromServer::onThreadReady);
  60. qDebug() << "disconnected";
  61. ui->label->setText( "Vorgang wird abgebrochen..." );
  62. if( rfst->client )
  63. rfst->client->cancel = 1;
  64. rfst->wait();
  65. this->close();
  66. }
  67. // Abfragen von Vorabannotationen abgeschlossen
  68. void RequestFromServer::onThreadReady( std::vector< std::vector< cv::Point > > *objects )
  69. {
  70. qDebug() << "onThreadReady";
  71. ui->abbrechen->setEnabled( false );
  72. this->objects = *objects;
  73. delete objects;
  74. this->close();
  75. }