input_pump_tab.cpp 1.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667
  1. #include "input_pump_tab.hpp"
  2. QtInputPumpTab::QtInputPumpTab(Source* _source):QWidget(){
  3. source=_source;
  4. main_layout=new QVBoxLayout;
  5. pumps_layout=new QVBoxLayout;
  6. button_layout=new QHBoxLayout;
  7. pumps_widget=new QWidget;
  8. button_widget=new QWidget;
  9. scroll_area=new QScrollArea;
  10. add_button=new QPushButton("Add pump");
  11. refresh_button=new QPushButton("Refresh");
  12. pumps_widget->setLayout(pumps_layout);
  13. scroll_area->setWidget(pumps_widget);
  14. scroll_area->setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff);
  15. scroll_area->setWidgetResizable(true);
  16. main_layout->addWidget(scroll_area);
  17. button_layout->addWidget(add_button);
  18. button_layout->addWidget(refresh_button);
  19. button_widget->setLayout(button_layout);
  20. main_layout->addWidget(button_widget);
  21. setLayout(main_layout);
  22. connect(add_button,&QPushButton::clicked,this,&QtInputPumpTab::addPump);
  23. connect(refresh_button,&QPushButton::clicked,this,&QtInputPumpTab::updateSources);
  24. }
  25. void
  26. QtInputPumpTab::addPump(){
  27. QtInputPump* input_pump=new QtInputPump(source);
  28. pumps_layout->addWidget(input_pump);
  29. connect(input_pump,&QtInputPump::remove,this,&QtInputPumpTab::removePump);
  30. emit sourcesChanged();
  31. }
  32. void
  33. QtInputPumpTab::removePump(QtInputPump* input_pump){
  34. disconnect(input_pump,nullptr,nullptr,nullptr);
  35. pumps_layout->removeWidget(input_pump);
  36. delete input_pump;
  37. emit sourcesChanged();
  38. }
  39. QWidget*
  40. QtInputPumpTab::validate(){
  41. for(size_t i=0;i<pumps_layout->count();++i){
  42. QtInputPump* pump_input=(QtInputPump*)pumps_layout->itemAt(i)->widget();
  43. QWidget* widget=pump_input->validate();
  44. if(widget!=nullptr) return widget;
  45. }
  46. return nullptr;
  47. }
  48. void
  49. QtInputPumpTab::updateSources(){
  50. QWidget* widget=validate();
  51. if(widget!=nullptr){
  52. QMessageBox msgBox;
  53. msgBox.setText("Incorrect pump entry");
  54. msgBox.exec();
  55. widget->setFocus();
  56. }
  57. emit sourcesChanged();
  58. }