11 #include <ui_entitySelectionDlg.h>
15 #include <QListWidgetItem>
19 bool multiSelectionEnabled,
20 int defaultSelectedIndex ,
23 : QDialog(parent, Qt::Tool), m_ui(new Ui_EntitySelectionDialog) {
27 if (multiSelectionEnabled) {
28 m_ui->label->setText(tr(
"Select one or several entities:"));
29 m_ui->listWidget->setSelectionMode(
30 QAbstractItemView::ExtendedSelection);
31 connect(
m_ui->selectAllPushButton, &QPushButton::clicked,
this,
33 connect(
m_ui->selectNonePushButton, &QPushButton::clicked,
this,
36 m_ui->selectAllPushButton->setVisible(
false);
37 m_ui->selectNonePushButton->setVisible(
false);
40 for (
size_t i = 0; i < entities.size(); ++i) {
42 m_ui->listWidget->insertItem(
44 new QListWidgetItem(QString(
"[ID %1] %2")
45 .arg(entities[i]->getUniqueID())
46 .arg(entities[i]->getName())));
50 if (defaultSelectedIndex >= 0 &&
51 static_cast<size_t>(defaultSelectedIndex) < entities.size()) {
52 m_ui->listWidget->item(defaultSelectedIndex)->setSelected(
true);
56 if (!labelStr.isNull()) {
57 m_ui->label->setText(labelStr);
71 m_ui->listWidget->clearSelection();
76 QList<QListWidgetItem*> list =
m_ui->listWidget->selectedItems();
77 return list.empty() ? -1 :
m_ui->listWidget->row(list.front());
81 std::vector<int>& indexes)
const {
83 QList<QListWidgetItem*> list =
m_ui->listWidget->selectedItems();
86 indexes.resize(
static_cast<size_t>(list.size()));
87 }
catch (
const std::bad_alloc&) {
92 for (
int i = 0; i < list.size(); ++i) {
93 indexes[i] =
m_ui->listWidget->row(list[i]);
112 std::vector<int>& selectedIndexes,
115 selectedIndexes.clear();
std::vector< ccHObject * > Container
Standard instances container (for children, etc.)
Dialog to select one or multiple entities.
void selectNone()
Selects all entities.
Ui_EntitySelectionDialog * m_ui
Associated ui.
static int SelectEntity(const ccHObject::Container &entities, int defaultSelectedIndex=0, QWidget *parent=0, QString label=QString())
Static shortcut: unique selection mode.
int getSelectedIndex() const
Returns the selected index (unique selection mode)
ecvEntitySelectionDialog(const ccHObject::Container &entities, bool multiSelectionEnabled, int defaultSelectedIndex=0, QWidget *parent=0, QString label=QString())
Default constructor.
virtual ~ecvEntitySelectionDialog()
Destructor.
static bool SelectEntities(const ccHObject::Container &entities, std::vector< int > &indexes, QWidget *parent=0, QString label=QString())
Static shortcut: multi-selection mode.
void selectAll()
Selects all entities.
void getSelectedIndexes(std::vector< int > &indexes) const
Returns the selected indexes (multi-selection mode)