browseModal.cpp 1.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455
  1. #include <QFileDialog>
  2. #include "ui_BrowseModal.h"
  3. #include "browseModal.h"
  4. using namespace craftlab::fakeraid;
  5. BrowseModal::BrowseModal(bool _cancellable, const std::vector<std::string>& previous): cancellable(_cancellable), ui(std::make_unique<Ui_BrowseModal>())
  6. {
  7. ui->setupUi(this);
  8. if (!cancellable)
  9. {
  10. setWindowFlags(windowFlags() & ~Qt::WindowCloseButtonHint);
  11. ui->buttonBox->setStandardButtons(QDialogButtonBox::StandardButton::Open);
  12. }
  13. else
  14. {
  15. ui->buttonBox->setStandardButtons(QDialogButtonBox::StandardButton::Open | QDialogButtonBox::StandardButton::Cancel);
  16. connect(ui->buttonBox, &QDialogButtonBox::rejected, this, [this]() { rejected = true; });
  17. }
  18. connect(ui->pushButton, &QPushButton::clicked, this, [this]() { BrowseForInput(*ui->lineEdit); });
  19. connect(ui->pushButton_2, &QPushButton::clicked, this, [this]() { BrowseForInput(*ui->lineEdit_2); });
  20. if (previous.size() > 0)
  21. ui->lineEdit->setText(previous[0].c_str());
  22. if (previous.size() > 1)
  23. ui->lineEdit_2->setText(previous[1].c_str());
  24. setModal(this);
  25. }
  26. BrowseModal::~BrowseModal()
  27. {}
  28. void BrowseModal::reject()
  29. {
  30. if (cancellable)
  31. QDialog::reject();
  32. }
  33. void BrowseModal::BrowseForInput(QLineEdit& input)
  34. {
  35. QString path = QFileDialog::getExistingDirectory(this, "FakeRaid", input.text());
  36. if (!path.isNull())
  37. input.setText(path);
  38. }
  39. std::vector<std::string> BrowseModal::Display(bool cancellable, const std::vector<std::string>& previous)
  40. {
  41. BrowseModal dialog(cancellable, previous);
  42. dialog.exec();
  43. if (dialog.rejected)
  44. return std::vector<std::string> {};
  45. std::vector<std::string> result;
  46. result.push_back(dialog.ui->lineEdit->text().toStdString());
  47. result.push_back(dialog.ui->lineEdit_2->text().toStdString());
  48. return result;
  49. }