armywidget.h 1.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657
  1. /*
  2. * armywidget.h, 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. #pragma once
  11. #include "../StdInc.h"
  12. #include <QDialog>
  13. #include "../lib/mapObjects/CArmedInstance.h"
  14. const int TOTAL_SLOTS = 7;
  15. namespace Ui {
  16. class ArmyWidget;
  17. }
  18. class ArmyWidget : public QDialog
  19. {
  20. Q_OBJECT
  21. public:
  22. explicit ArmyWidget(CArmedInstance &, QWidget *parent = nullptr);
  23. ~ArmyWidget();
  24. void obtainData();
  25. bool commitChanges();
  26. private:
  27. int searchItemIndex(int slotId, CreatureID creId) const;
  28. Ui::ArmyWidget *ui;
  29. CArmedInstance & army;
  30. std::array<QLineEdit*, TOTAL_SLOTS> uiCounts;
  31. std::array<QComboBox*, TOTAL_SLOTS> uiSlots;
  32. };
  33. class ArmyDelegate : public QStyledItemDelegate
  34. {
  35. Q_OBJECT
  36. public:
  37. using QStyledItemDelegate::QStyledItemDelegate;
  38. ArmyDelegate(CArmedInstance &);
  39. QWidget * createEditor(QWidget *parent, const QStyleOptionViewItem &option, const QModelIndex &index) const override;
  40. void setEditorData(QWidget *editor, const QModelIndex &index) const override;
  41. void setModelData(QWidget *editor, QAbstractItemModel *model, const QModelIndex &index) const override;
  42. private:
  43. CArmedInstance & army;
  44. };