editmarknodedialog.cpp 1.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768
  1. #include "editmarknodedialog.h"
  2. #include "ui_editmarknodedialog.h"
  3. EditMarkNodeDialog::EditMarkNodeDialog(QWidget *parent) : QDialog(parent), ui(new Ui::EditMarkNodeDialog)
  4. {
  5. ui->setupUi(this);
  6. setWindowFlags(Qt::CustomizeWindowHint | Qt::WindowCloseButtonHint);
  7. ui->lvData->setViewMode(QListWidget::IconMode);
  8. ui->lvSel->setViewMode(QListWidget::IconMode);
  9. for (int i = 1; i <= 19; i++) {
  10. QListWidgetItem *item = new QListWidgetItem();
  11. item->setIcon(QIcon(QString(":/res/flags/%1.png").arg(i)));
  12. item->setData(Qt::UserRole, i);
  13. ui->lvData->addItem(item);
  14. }
  15. }
  16. EditMarkNodeDialog::~EditMarkNodeDialog()
  17. {
  18. delete ui;
  19. }
  20. void EditMarkNodeDialog::setMarkNodes(QSet<int> &markNodes)
  21. {
  22. m_markNodes = markNodes;
  23. ui->lvSel->clear();
  24. for (auto i : m_markNodes) {
  25. QListWidgetItem *item = new QListWidgetItem();
  26. item->setIcon(QIcon(QString(":/res/flags/%1.png").arg(i)));
  27. item->setData(Qt::UserRole, i);
  28. ui->lvSel->addItem(item);
  29. }
  30. }
  31. void EditMarkNodeDialog::on_lvData_itemDoubleClicked(QListWidgetItem *item)
  32. {
  33. int i = item->data(Qt::UserRole).toInt();
  34. if (!m_markNodes.contains(i)) {
  35. m_markNodes << i;
  36. QListWidgetItem *item = new QListWidgetItem();
  37. item->setIcon(QIcon(QString(":/res/flags/%1.png").arg(i)));
  38. item->setData(Qt::UserRole, i);
  39. ui->lvSel->addItem(item);
  40. }
  41. }
  42. void EditMarkNodeDialog::on_lvSel_itemDoubleClicked(QListWidgetItem *item)
  43. {
  44. int i = item->data(Qt::UserRole).toInt();
  45. m_markNodes.remove(i);
  46. ui->lvSel->removeItemWidget(item);
  47. delete item;
  48. }
  49. void EditMarkNodeDialog::on_btnCancel_clicked()
  50. {
  51. reject();
  52. }
  53. void EditMarkNodeDialog::on_btnOk_clicked()
  54. {
  55. accept();
  56. }
  57. QSet<int> &EditMarkNodeDialog::markNodes()
  58. {
  59. return m_markNodes;
  60. }