rumorsettings.cpp 2.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283
  1. /*
  2. * rumorsettings.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 "rumorsettings.h"
  12. #include "ui_rumorsettings.h"
  13. #include "../mapcontroller.h"
  14. RumorSettings::RumorSettings(QWidget *parent) :
  15. AbstractSettings(parent),
  16. ui(new Ui::RumorSettings)
  17. {
  18. ui->setupUi(this);
  19. }
  20. RumorSettings::~RumorSettings()
  21. {
  22. delete ui;
  23. }
  24. void RumorSettings::initialize(MapController & c)
  25. {
  26. AbstractSettings::initialize(c);
  27. for(auto & rumor : controller->map()->rumors)
  28. {
  29. auto * item = new QListWidgetItem(QString::fromStdString(rumor.name));
  30. item->setData(Qt::UserRole, QVariant(QString::fromStdString(rumor.text.toString())));
  31. item->setFlags(item->flags() | Qt::ItemIsEditable);
  32. ui->rumors->addItem(item);
  33. }
  34. }
  35. void RumorSettings::update()
  36. {
  37. controller->map()->rumors.clear();
  38. for(int i = 0; i < ui->rumors->count(); ++i)
  39. {
  40. Rumor rumor;
  41. rumor.name = ui->rumors->item(i)->text().toStdString();
  42. rumor.text.appendTextID(mapRegisterLocalizedString("map", *controller->map(), TextIdentifier("header", "rumor", i, "text"), ui->rumors->item(i)->data(Qt::UserRole).toString().toStdString()));
  43. controller->map()->rumors.push_back(rumor);
  44. }
  45. }
  46. void RumorSettings::on_message_textChanged()
  47. {
  48. if(auto item = ui->rumors->currentItem())
  49. item->setData(Qt::UserRole, QVariant(ui->message->toPlainText()));
  50. }
  51. void RumorSettings::on_add_clicked()
  52. {
  53. auto * item = new QListWidgetItem(tr("New rumor"));
  54. item->setData(Qt::UserRole, QVariant(""));
  55. item->setFlags(item->flags() | Qt::ItemIsEditable);
  56. ui->rumors->addItem(item);
  57. emit ui->rumors->itemActivated(item);
  58. }
  59. void RumorSettings::on_remove_clicked()
  60. {
  61. if(auto item = ui->rumors->currentItem())
  62. {
  63. ui->message->setPlainText("");
  64. ui->rumors->takeItem(ui->rumors->row(item));
  65. }
  66. }
  67. void RumorSettings::on_rumors_itemSelectionChanged()
  68. {
  69. if(auto item = ui->rumors->currentItem())
  70. ui->message->setPlainText(item->data(Qt::UserRole).toString());
  71. }