Program Listing for File dialog_with_itemlist.h

Return to documentation for file (src/dialog_with_itemlist.h)

#ifndef DIALOG_WITH_ITEMLIST_H
#define DIALOG_WITH_ITEMLIST_H

#include <QDialog>
#include <QLabel>
#include <QListWidget>
#include <QAbstractButton>
#include <unordered_set>

#include "ui_dialog_with_itemlist.h"

namespace Ui
{
class DialogWithItemList;
}

class DialogWithItemList : public QDialog
{
  Q_OBJECT
private:
  Ui::DialogWithItemList* ui;

public:
  explicit DialogWithItemList(QWidget* parent, QString title, QString text, std::unordered_set<std::string> list)
    : QDialog(parent), ui(new Ui::DialogWithItemList)
  {
    QStringList name_list;
    for (auto& name : list)
    {
      name_list.push_back(name.c_str());
    }

    ui->setupUi(this);
    this->setWindowTitle(title);
    ui->label->setText(text);
    ui->listWidget->addItems(name_list);
    ui->listWidget->sortItems();
  }
  ~DialogWithItemList()
  {
    delete ui;
  }

  static void warning(const QString& message, std::unordered_set<std::string> list)
  {
    auto dialog = new DialogWithItemList(0, tr("Warning"), message, list);
    dialog->exec();
    dialog->deleteLater();
  }

private slots:
  void on_buttonBox_clicked(QAbstractButton* button)
  {
    this->close();
  }
};

#endif  // DIALOG_WITH_ITEMLIST_H