27 #include "ui_DoubleInputListWidgetForm.h" 35 :
QWidget(parent, f), m_ui(new
Ui::DoubleInputListWidgetForm)
40 m_ui->m_addToolButton->setIcon(QIcon::fromTheme(
"go-next"));
41 m_ui->m_addAllToolButton->setIcon(QIcon::fromTheme(
"go-last"));
42 m_ui->m_removeToolButton->setIcon(QIcon::fromTheme(
"go-previous"));
43 m_ui->m_removeAllToolButton->setIcon(QIcon::fromTheme(
"go-first"));
44 m_ui->m_upToolButton->setIcon(QIcon::fromTheme(
"go-up"));
45 m_ui->m_downToolButton->setIcon(QIcon::fromTheme(
"go-down"));
48 m_ui->m_firstInputListWidget->setSelectionMode(
49 QAbstractItemView::ExtendedSelection);
50 m_ui->m_secondInputListWidget->setSelectionMode(
51 QAbstractItemView::ExtendedSelection);
52 m_ui->m_outputListWidget->setSelectionMode(
53 QAbstractItemView::ExtendedSelection);
56 connect(
m_ui->m_addToolButton, SIGNAL(pressed()),
this,
58 connect(
m_ui->m_addAllToolButton, SIGNAL(pressed()),
this,
60 connect(
m_ui->m_removeToolButton, SIGNAL(pressed()),
this,
62 connect(
m_ui->m_removeAllToolButton, SIGNAL(pressed()),
this,
64 connect(
m_ui->m_firstInputListWidget, SIGNAL(itemSelectionChanged()),
this,
66 connect(
m_ui->m_secondInputListWidget, SIGNAL(itemSelectionChanged()),
this,
68 connect(
m_ui->m_outputListWidget, SIGNAL(itemSelectionChanged()),
this,
70 connect(
m_ui->m_upToolButton, SIGNAL(pressed()),
this,
72 connect(
m_ui->m_downToolButton, SIGNAL(pressed()),
this,
87 m_ui->m_firstItemsLabel->setText(value);
93 m_ui->m_secondItemsLabel->setText(value);
99 m_ui->m_outputItemsLabel->setText(value);
103 const std::vector<std::string>& values)
105 m_ui->m_firstInputListWidget->clear();
108 m_ui->m_addAllToolButton->setEnabled(
true);
110 m_ui->m_addAllToolButton->setEnabled(
false);
112 for(
size_t i = 0; i < values.size(); ++i)
114 QListWidgetItem* item =
new QListWidgetItem(
m_ui->m_firstInputListWidget);
115 item->setText(QString::fromUtf8(values[i].c_str()));
116 item->setData(Qt::UserRole, QVariant(0));
118 m_ui->m_outputListWidget->addItem(item);
123 const std::vector<std::string>& values)
125 m_ui->m_secondInputListWidget->clear();
128 m_ui->m_addAllToolButton->setEnabled(
true);
130 m_ui->m_addAllToolButton->setEnabled(
false);
132 for(
size_t i = 0; i < values.size(); ++i)
134 QListWidgetItem* item =
new QListWidgetItem(
m_ui->m_secondInputListWidget);
135 item->setText(QString::fromUtf8(values[i].c_str()));
136 item->setData(Qt::UserRole, QVariant(1));
138 m_ui->m_outputListWidget->addItem(item);
143 const std::vector<std::string>& values,
const int&
id)
145 m_ui->m_outputListWidget->clear();
148 m_ui->m_removeAllToolButton->setEnabled(
true);
150 m_ui->m_removeAllToolButton->setEnabled(
false);
152 for(
size_t i = 0; i < values.size(); ++i)
154 QListWidgetItem* item =
new QListWidgetItem(
m_ui->m_outputListWidget);
155 item->setText(QString::fromUtf8(values[i].c_str()));
156 item->setData(Qt::UserRole, QVariant(
id));
158 m_ui->m_outputListWidget->addItem(item);
162 std::vector<std::string>
165 std::vector<std::string> vec;
167 int count =
m_ui->m_outputListWidget->count();
169 for(
int i = 0; i < count; ++i)
171 vec.push_back(
m_ui->m_outputListWidget->item(i)->text().toUtf8().data());
179 std::vector<int> vec;
181 int count =
m_ui->m_outputListWidget->count();
183 for (
int i = 0; i < count; ++i)
185 QVariant v =
m_ui->m_outputListWidget->item(i)->data(Qt::UserRole);
188 vec.push_back(v.toInt());
196 m_ui->m_firstInputListWidget->clear();
197 m_ui->m_secondInputListWidget->clear();
199 m_ui->m_addToolButton->setEnabled(
false);
200 m_ui->m_addAllToolButton->setEnabled(
false);
205 m_ui->m_outputListWidget->clear();
207 m_ui->m_removeToolButton->setEnabled(
false);
208 m_ui->m_removeAllToolButton->setEnabled(
false);
213 m_ui->m_upToolButton->setVisible(state);
214 m_ui->m_downToolButton->setVisible(state);
219 QList<QListWidgetItem*> firstInputList =
220 m_ui->m_firstInputListWidget->selectedItems();
222 QList<QListWidgetItem*> secondInputList =
223 m_ui->m_secondInputListWidget->selectedItems();
225 if(!firstInputList.empty() || !secondInputList.empty())
226 m_ui->m_removeAllToolButton->setEnabled(
true);
228 for(
int i = 0; i < firstInputList.size(); ++i)
230 int row =
m_ui->m_firstInputListWidget->row(firstInputList[i]);
232 QListWidgetItem* item =
m_ui->m_firstInputListWidget->takeItem(row);
234 m_ui->m_outputListWidget->addItem(item);
237 for(
int i = 0; i < secondInputList.size(); ++i)
239 int row =
m_ui->m_secondInputListWidget->row(secondInputList[i]);
241 QListWidgetItem* item =
m_ui->m_secondInputListWidget->takeItem(row);
243 m_ui->m_outputListWidget->addItem(item);
246 if(
m_ui->m_firstInputListWidget->count() == 0 &&
247 m_ui->m_secondInputListWidget->count() == 0)
249 m_ui->m_addToolButton->setEnabled(
false);
250 m_ui->m_addAllToolButton->setEnabled(
false);
258 m_ui->m_firstInputListWidget->selectAll();
259 m_ui->m_secondInputListWidget->selectAll();
261 QList<QListWidgetItem*> firstList =
262 m_ui->m_firstInputListWidget->selectedItems();
263 QList<QListWidgetItem*> secondList =
264 m_ui->m_secondInputListWidget->selectedItems();
266 if(!firstList.empty() || !secondList.empty())
267 m_ui->m_removeAllToolButton->setEnabled(
true);
269 for(
int i = 0; i < firstList.size(); ++i)
271 int row =
m_ui->m_firstInputListWidget->row(firstList[i]);
273 QListWidgetItem* item =
m_ui->m_firstInputListWidget->takeItem(row);
275 m_ui->m_outputListWidget->addItem(item);
278 for(
int i = 0; i < secondList.size(); ++i)
280 int row =
m_ui->m_secondInputListWidget->row(secondList[i]);
282 QListWidgetItem* item =
m_ui->m_secondInputListWidget->takeItem(row);
284 m_ui->m_outputListWidget->addItem(item);
287 m_ui->m_addToolButton->setEnabled(
false);
288 m_ui->m_addAllToolButton->setEnabled(
false);
295 QList<QListWidgetItem*> list =
m_ui->m_outputListWidget->selectedItems();
297 if(list.empty() ==
false)
298 m_ui->m_addAllToolButton->setEnabled(
true);
300 for(
int i = 0; i < list.size(); ++i)
302 int row =
m_ui->m_outputListWidget->row(list[i]);
304 QListWidgetItem* item =
m_ui->m_outputListWidget->takeItem(row);
306 QVariant v = item->data(Qt::UserRole);
313 m_ui->m_firstInputListWidget->addItem(item);
315 m_ui->m_secondInputListWidget->addItem(item);
319 if(
m_ui->m_outputListWidget->count() == 0)
321 m_ui->m_removeToolButton->setEnabled(
false);
322 m_ui->m_removeAllToolButton->setEnabled(
false);
323 m_ui->m_upToolButton->setEnabled(
false);
324 m_ui->m_downToolButton->setEnabled(
false);
332 m_ui->m_outputListWidget->selectAll();
334 QList<QListWidgetItem*> list =
m_ui->m_outputListWidget->selectedItems();
336 if(list.empty() ==
false)
337 m_ui->m_addAllToolButton->setEnabled(
true);
339 for(
int i = 0; i < list.size(); ++i)
341 int row =
m_ui->m_outputListWidget->row(list[i]);
343 QListWidgetItem* item =
m_ui->m_outputListWidget->takeItem(row);
345 QVariant v = item->data(Qt::UserRole);
352 m_ui->m_firstInputListWidget->addItem(item);
354 m_ui->m_secondInputListWidget->addItem(item);
358 m_ui->m_removeToolButton->setEnabled(
false);
359 m_ui->m_removeAllToolButton->setEnabled(
false);
360 m_ui->m_upToolButton->setEnabled(
false);
361 m_ui->m_downToolButton->setEnabled(
false);
368 int count =
m_ui->m_outputListWidget->count();
370 if(count ==
m_ui->m_outputListWidget->selectedItems().size())
373 for(
int i = count-1; i >= 0; --i)
375 QListWidgetItem* currentItem =
m_ui->m_outputListWidget->item(i);
380 if(currentItem->isSelected())
382 QListWidgetItem* itemAfter =
m_ui->m_outputListWidget->item(i+1);
384 bool wasSelected = itemAfter->isSelected();
386 m_ui->m_outputListWidget->takeItem(i);
387 m_ui->m_outputListWidget->takeItem(i);
389 m_ui->m_outputListWidget->insertItem(i, itemAfter);
390 m_ui->m_outputListWidget->insertItem(i+1, currentItem);
392 currentItem->setSelected(
true);
395 itemAfter->setSelected(
true);
402 int count =
m_ui->m_outputListWidget->count();
404 if(count ==
m_ui->m_outputListWidget->selectedItems().size())
407 for(
int i = 0; i < count; ++i)
409 QListWidgetItem* currentItem =
m_ui->m_outputListWidget->item(i);
414 if(currentItem->isSelected())
416 QListWidgetItem* itemBefore =
m_ui->m_outputListWidget->item(i-1);
418 bool wasSelected = itemBefore->isSelected();
420 m_ui->m_outputListWidget->takeItem(i);
421 m_ui->m_outputListWidget->takeItem(i-1);
423 m_ui->m_outputListWidget->insertItem(i-1, currentItem);
424 m_ui->m_outputListWidget->insertItem(i, itemBefore);
426 currentItem->setSelected(
true);
429 itemBefore->setSelected(
true);
437 if(
m_ui->m_firstInputListWidget->selectedItems().size() > 0)
439 m_ui->m_addToolButton->setEnabled(
true);
440 m_ui->m_addAllToolButton->setEnabled(
true);
444 m_ui->m_addToolButton->setEnabled(
false);
451 if(
m_ui->m_secondInputListWidget->selectedItems().size() > 0)
453 m_ui->m_addToolButton->setEnabled(
true);
454 m_ui->m_addAllToolButton->setEnabled(
true);
458 m_ui->m_addToolButton->setEnabled(
false);
464 if(
m_ui->m_outputListWidget->selectedItems().size() > 0)
466 m_ui->m_removeToolButton->setEnabled(
true);
467 m_ui->m_removeAllToolButton->setEnabled(
true);
468 m_ui->m_upToolButton->setEnabled(
true);
469 m_ui->m_downToolButton->setEnabled(
true);
473 m_ui->m_removeToolButton->setEnabled(
false);
474 m_ui->m_upToolButton->setEnabled(
false);
475 m_ui->m_downToolButton->setEnabled(
false);