20 #include <keduvoctranslation.h>
21 #include <keduvocexpression.h>
24 #include <QStringListModel>
25 #include <QDragEnterEvent>
27 using namespace Editor;
33 connect(addChoiceButton, SIGNAL(clicked()), SLOT(slotAddChoiceButton()));
34 connect(removeChoiceButton, SIGNAL(clicked()), SLOT(slotRemoveChoiceButton()));
36 m_choicesModel =
new QStringListModel(
this);
37 multipleChoiceListView->setModel(m_choicesModel);
39 connect(m_choicesModel, SIGNAL(dataChanged (
const QModelIndex &,
const QModelIndex & )), SLOT(slotDataChanged(
const QModelIndex &,
const QModelIndex & )));
41 multipleChoiceListView->setAcceptDrops(
true);
42 multipleChoiceListView->installEventFilter(
this);
48 void MultipleChoiceWidget::slotDataChanged(
const QModelIndex & topLeft,
const QModelIndex & bottomRight )
52 m_translation->multipleChoice() = m_choicesModel->stringList();
53 removeChoiceButton->setEnabled(m_translation && m_translation->multipleChoice().count() > 0);
60 m_translation = entry->translation(translation);
67 m_choicesModel->setStringList(m_translation->multipleChoice());
68 removeChoiceButton->setEnabled(m_translation->multipleChoice().count() > 0);
72 removeChoiceButton->setEnabled(m_translation && m_translation->multipleChoice().count() > 0);
76 void MultipleChoiceWidget::slotAddChoiceButton()
78 m_choicesModel->insertRow(m_choicesModel->rowCount());
79 QModelIndex index(m_choicesModel->index(m_choicesModel->rowCount() - 1));
80 m_choicesModel->setData(index,
"");
81 multipleChoiceListView->scrollTo(index);
82 multipleChoiceListView->setCurrentIndex(index);
83 multipleChoiceListView->edit(index);
87 void MultipleChoiceWidget::slotRemoveChoiceButton()
89 QModelIndex index = multipleChoiceListView->selectionModel()->currentIndex();
90 if (index.isValid()) {
91 m_choicesModel->removeRows(index.row(), 1, QModelIndex());
93 m_choicesModel->removeRows(m_choicesModel->rowCount(QModelIndex()) - 1, 1, QModelIndex());
95 m_translation->multipleChoice() = m_choicesModel->stringList();
96 removeChoiceButton->setEnabled(m_translation && m_translation->multipleChoice().count() > 0);
102 if (obj == multipleChoiceListView) {
103 if (event->type() == QEvent::DragEnter) {
104 QDragEnterEvent *dragEnterEvent =
static_cast<QDragEnterEvent *
>(event);
105 kDebug() <<
"DragEnter mime format: " << dragEnterEvent->format();
106 if (dragEnterEvent->mimeData()->hasText()) {
112 if (event->type() == QEvent::DragMove) {
117 if (event->type() == QEvent::Drop) {
118 QDropEvent *dropEvent =
static_cast<QDropEvent *
>(event);
119 kDebug() <<
"You dropped onto me: " << dropEvent->mimeData()->text();
121 QStringList choices = dropEvent->mimeData()->text().split(
'\n');
122 foreach(
const QString &choice, choices) {
123 m_choicesModel->insertRow(multipleChoiceListView->model()->rowCount());
124 m_choicesModel->setData(m_choicesModel->index(multipleChoiceListView->model()->rowCount()-1), choice);
129 return QObject::eventFilter(obj, event);
133 #include "multiplechoicewidget.moc"