ctkDICOMQueryWidget.cpp 4.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123
  1. // ctkDICOMWidgets includes
  2. #include "ctkDICOMQueryWidget.h"
  3. #include "ui_ctkDICOMQueryWidget.h"
  4. // STD includes
  5. #include <iostream>
  6. // Qt includes
  7. #include <QTimer>
  8. //logger
  9. #include <ctkLogger.h>
  10. static ctkLogger logger("org.commontk.DICOM.Widgets.ctkDICOMQueryWidget");
  11. //----------------------------------------------------------------------------
  12. class ctkDICOMQueryWidgetPrivate: public Ui_ctkDICOMQueryWidget
  13. {
  14. public:
  15. ctkDICOMQueryWidgetPrivate();
  16. ~ctkDICOMQueryWidgetPrivate();
  17. QTimer* SearchTimer;
  18. int SearchIdleTime;
  19. };
  20. //----------------------------------------------------------------------------
  21. // ctkDICOMQueryWidgetPrivate methods
  22. //----------------------------------------------------------------------------
  23. ctkDICOMQueryWidgetPrivate::ctkDICOMQueryWidgetPrivate(){
  24. // set default of search idle time to 500 ms
  25. this->SearchIdleTime = 500;
  26. // Initialize search timer
  27. this->SearchTimer = new QTimer();
  28. this->SearchTimer->setSingleShot(true);
  29. }
  30. //----------------------------------------------------------------------------
  31. ctkDICOMQueryWidgetPrivate::~ctkDICOMQueryWidgetPrivate(){
  32. this->SearchTimer->deleteLater();
  33. }
  34. //----------------------------------------------------------------------------
  35. // ctkDICOMQueryWidget methods
  36. //----------------------------------------------------------------------------
  37. ctkDICOMQueryWidget::ctkDICOMQueryWidget(QWidget* _parent):Superclass(_parent),
  38. d_ptr(new ctkDICOMQueryWidgetPrivate)
  39. {
  40. Q_D(ctkDICOMQueryWidget);
  41. d->setupUi(this);
  42. connect(d->NameSearch, SIGNAL(textChanged(QString)), this, SLOT(startTimer()));
  43. connect(d->StudySearch, SIGNAL(textChanged(QString)), this, SLOT(startTimer()));
  44. connect(d->SeriesSearch, SIGNAL(textChanged(QString)), this, SLOT(startTimer()));
  45. connect(d->IdSearch, SIGNAL(textChanged(QString)), this, SLOT(startTimer()));
  46. connect(d->DateRangeWidget, SIGNAL(endDateTimeChanged(QDateTime)), this, SLOT(startTimer()));
  47. connect(d->DateRangeWidget, SIGNAL(startDateTimeChanged(QDateTime)), this, SLOT(startTimer()));
  48. connect(d->ModalityWidget, SIGNAL(selectedModalitiesChanged(QStringList)), this, SLOT(startTimer()));
  49. connect(d->SearchTimer, SIGNAL(timeout()), this, SIGNAL(parameterChanged()));
  50. }
  51. //----------------------------------------------------------------------------
  52. ctkDICOMQueryWidget::~ctkDICOMQueryWidget()
  53. {
  54. Q_D(ctkDICOMQueryWidget);
  55. disconnect(d->NameSearch, SIGNAL(textChanged(QString)), this, SLOT(startTimer()));
  56. disconnect(d->StudySearch, SIGNAL(textChanged(QString)), this, SLOT(startTimer()));
  57. disconnect(d->SeriesSearch, SIGNAL(textChanged(QString)), this, SLOT(startTimer()));
  58. disconnect(d->IdSearch, SIGNAL(textChanged(QString)), this, SLOT(startTimer()));
  59. disconnect(d->DateRangeWidget, SIGNAL(endDateTimeChanged(QDateTime)), this, SLOT(startTimer()));
  60. disconnect(d->DateRangeWidget, SIGNAL(startDateTimeChanged(QDateTime)), this, SLOT(startTimer()));
  61. disconnect(d->ModalityWidget, SIGNAL(selectedModalitiesChanged(QStringList)), this, SLOT(startTimer()));
  62. disconnect(d->SearchTimer, SIGNAL(timeout()), this, SIGNAL(parameterChanged()));
  63. }
  64. //----------------------------------------------------------------------------
  65. QMap<QString,QVariant> ctkDICOMQueryWidget::parameters()
  66. {
  67. Q_D(ctkDICOMQueryWidget);
  68. QMap<QString,QVariant> parameters;
  69. parameters["Name"] = d->NameSearch->text();
  70. parameters["Study"] = d->StudySearch->text();
  71. parameters["Series"] = d->SeriesSearch->text();
  72. parameters["ID"] = d->IdSearch->text();
  73. if ( !d->ModalityWidget->areAllModalitiesSelected() )
  74. { // some PACS (conquest) don't seem to accept list of modalities,
  75. // so don't include the list at all when all modalities are desired
  76. // TODO: think about how to fix this for conquest at the query level
  77. parameters["Modalities"] = d->ModalityWidget->selectedModalities();
  78. }
  79. if ( !d->DateRangeWidget->isAnyDate() )
  80. {
  81. QDate startDate = d->DateRangeWidget->startDateTime().date();
  82. QDate endDate = d->DateRangeWidget->endDateTime().date();
  83. parameters["StartDate"] = startDate.toString("yyyyMMdd");
  84. parameters["EndDate"] = endDate.toString("yyyyMMdd");
  85. }
  86. return parameters;
  87. }
  88. //----------------------------------------------------------------------------
  89. void ctkDICOMQueryWidget::startTimer(){
  90. Q_D(ctkDICOMQueryWidget);
  91. d->SearchTimer->stop();
  92. d->SearchTimer->start(d->SearchIdleTime);
  93. }