factionselector.cpp 1.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364
  1. /*
  2. * factionselector.cpp, part of VCMI engine
  3. *
  4. * Authors: listed in file AUTHORS in main folder
  5. *
  6. * License: GNU General Public License v2.0 or later
  7. * Full text of license available in license.txt file, in main folder
  8. *
  9. */
  10. #include "StdInc.h"
  11. #include "factionselector.h"
  12. #include "ui_factionselector.h"
  13. #include "../../lib/GameLibrary.h"
  14. #include "../../lib/entities/faction/CTownHandler.h"
  15. FactionSelector::FactionSelector(std::set<FactionID> & factions) :
  16. ui(new Ui::FactionSelector),
  17. factionsSelected(factions)
  18. {
  19. ui->setupUi(this);
  20. setWindowTitle(tr("Faction Selector"));
  21. setWindowModality(Qt::ApplicationModal);
  22. for(auto const & objectPtr : LIBRARY->townh->objects)
  23. {
  24. auto * item = new QListWidgetItem(QString::fromStdString(objectPtr->getNameTranslated()));
  25. item->setData(Qt::UserRole, QVariant::fromValue(objectPtr->getIndex()));
  26. item->setFlags(item->flags() | Qt::ItemIsUserCheckable);
  27. item->setCheckState(factions.count(objectPtr->getId()) ? Qt::Checked : Qt::Unchecked);
  28. ui->listWidgetFactions->addItem(item);
  29. }
  30. show();
  31. }
  32. void FactionSelector::showFactionSelector(std::set<FactionID> & factions)
  33. {
  34. auto * dialog = new FactionSelector(factions);
  35. dialog->setAttribute(Qt::WA_DeleteOnClose);
  36. dialog->exec();
  37. }
  38. void FactionSelector::on_buttonBoxResult_accepted()
  39. {
  40. factionsSelected.clear();
  41. for(int i = 0; i < ui->listWidgetFactions->count(); ++i)
  42. {
  43. auto * item = ui->listWidgetFactions->item(i);
  44. if(item->checkState() == Qt::Checked)
  45. factionsSelected.insert(FactionID(item->data(Qt::UserRole).toInt()));
  46. }
  47. close();
  48. }
  49. void FactionSelector::on_buttonBoxResult_rejected()
  50. {
  51. close();
  52. }