ccSelectChildrenDlg.cpp 3.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110
  1. //##########################################################################
  2. //# #
  3. //# CLOUDCOMPARE #
  4. //# #
  5. //# This program is free software; you can redistribute it and/or modify #
  6. //# it under the terms of the GNU General Public License as published by #
  7. //# the Free Software Foundation; version 2 or later of the License. #
  8. //# #
  9. //# This program is distributed in the hope that it will be useful, #
  10. //# but WITHOUT ANY WARRANTY; without even the implied warranty of #
  11. //# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the #
  12. //# GNU General Public License for more details. #
  13. //# #
  14. //# COPYRIGHT: EDF R&D / TELECOM ParisTech (ENST-TSI) #
  15. //# #
  16. //##########################################################################
  17. #include "ccSelectChildrenDlg.h"
  18. #include "ui_selectChildrenDlg.h"
  19. static QString s_lastName;
  20. static bool s_lastNameState = false;
  21. static CC_CLASS_ENUM s_lastType = CC_TYPES::POINT_CLOUD;
  22. static bool s_lastTypeState = true;
  23. static bool s_lastTypeStrictState = true;
  24. static bool s_lastUseRegex = true;
  25. ccSelectChildrenDlg::ccSelectChildrenDlg(QWidget* parent/*=nullptr*/)
  26. : QDialog(parent, Qt::Tool)
  27. , mUI( new Ui::SelectChildrenDialog )
  28. {
  29. mUI->setupUi(this);
  30. mUI->typeCheckBox->setChecked(s_lastTypeState);
  31. mUI->typeStrictCheckBox->setChecked(s_lastTypeStrictState);
  32. mUI->nameCheckBox->setChecked(s_lastNameState);
  33. mUI->nameLineEdit->setText(s_lastName);
  34. mUI->checkBoxRegex->setChecked(s_lastUseRegex);
  35. connect(mUI->buttonBox, &QDialogButtonBox::accepted, this, &ccSelectChildrenDlg::onAccept);
  36. }
  37. ccSelectChildrenDlg::~ccSelectChildrenDlg()
  38. {
  39. delete mUI;
  40. mUI = nullptr;
  41. }
  42. void ccSelectChildrenDlg::addType(QString typeName, CC_CLASS_ENUM type)
  43. {
  44. mUI->typeComboBox->addItem(typeName,QVariant::fromValue<qint64>(type));
  45. //auto select last selected type
  46. if (type == s_lastType)
  47. {
  48. mUI->typeComboBox->setCurrentIndex(mUI->typeComboBox->count()-1);
  49. }
  50. }
  51. void ccSelectChildrenDlg::onAccept()
  52. {
  53. s_lastNameState = mUI->nameCheckBox->isChecked();
  54. s_lastName = mUI->nameLineEdit->text();
  55. s_lastTypeState = mUI->typeCheckBox->isChecked();
  56. s_lastTypeStrictState = mUI->typeCheckBox->isChecked();
  57. s_lastType = getSelectedType();
  58. s_lastUseRegex = getNameIsRegex();
  59. }
  60. CC_CLASS_ENUM ccSelectChildrenDlg::getSelectedType()
  61. {
  62. if (!mUI->typeCheckBox->isChecked())
  63. {
  64. return CC_TYPES::HIERARCHY_OBJECT;
  65. }
  66. int currentIndex = mUI->typeComboBox->currentIndex();
  67. return static_cast<CC_CLASS_ENUM>(mUI->typeComboBox->itemData(currentIndex).value<qint64>());
  68. }
  69. QString ccSelectChildrenDlg::getSelectedName()
  70. {
  71. if (!mUI->nameCheckBox->isChecked())
  72. {
  73. return QString();
  74. }
  75. return mUI->nameLineEdit->text();
  76. }
  77. bool ccSelectChildrenDlg::getStrictMatchState() const
  78. {
  79. return mUI->typeStrictCheckBox->isChecked();
  80. }
  81. bool ccSelectChildrenDlg::getTypeIsUsed() const
  82. {
  83. return mUI->typeCheckBox->isChecked();
  84. }
  85. bool ccSelectChildrenDlg::getNameIsRegex() const
  86. {
  87. return mUI->checkBoxRegex->isChecked();
  88. }
  89. bool ccSelectChildrenDlg::getNameMatchIsUsed() const
  90. {
  91. return mUI->nameCheckBox->isChecked();
  92. }