#include <config.h>
#include "GuiSelectionManager.h"
+#include "qt_helpers.h"
#include "support/debug.h"
namespace lyx {
namespace frontend {
-GuiSelectionManager::GuiSelectionManager(
- QAbstractItemView * avail,
- QAbstractItemView * sel,
- QPushButton * add,
- QPushButton * del,
- QPushButton * up,
- QPushButton * down,
- QAbstractListModel * amod,
- QAbstractItemModel * smod,
- int const main_sel_col)
- : availableLV(avail), selectedLV(sel), addPB(add), deletePB(del),
- upPB(up), downPB(down), availableModel(amod), selectedModel(smod),
- selectedHasFocus_(false), main_sel_col_(main_sel_col)
+GuiSelectionManager::GuiSelectionManager(QObject * parent,
+ QAbstractItemView * avail,
+ QAbstractItemView * sel,
+ QPushButton * add,
+ QPushButton * del,
+ QPushButton * up,
+ QPushButton * down,
+ QAbstractListModel * amod,
+ QAbstractItemModel * smod,
+ int const main_sel_col)
+: QObject(parent), availableLV(avail), selectedLV(sel),
+ addPB(add), deletePB(del), upPB(up), downPB(down),
+ availableModel(amod), selectedModel(smod),
+ selectedHasFocus_(false), main_sel_col_(main_sel_col)
{
-
selectedLV->setModel(smod);
availableLV->setModel(amod);
selectedLV->setSelectionBehavior(QAbstractItemView::SelectRows);
this, SLOT(selectedChanged(QItemSelection, QItemSelection)));
connect(selectedLV->itemDelegate(), SIGNAL(commitData(QWidget*)),
this, SLOT(selectedEdited()));
- connect(addPB, SIGNAL(clicked()),
+ connect(addPB, SIGNAL(clicked()),
this, SLOT(addPB_clicked()));
- connect(deletePB, SIGNAL(clicked()),
+ connect(deletePB, SIGNAL(clicked()),
this, SLOT(deletePB_clicked()));
- connect(upPB, SIGNAL(clicked()),
+ connect(upPB, SIGNAL(clicked()),
this, SLOT(upPB_clicked()));
- connect(downPB, SIGNAL(clicked()),
+ connect(downPB, SIGNAL(clicked()),
this, SLOT(downPB_clicked()));
- connect(availableLV, SIGNAL(doubleClicked(QModelIndex)),
+ connect(availableLV, SIGNAL(doubleClicked(QModelIndex)),
this, SLOT(availableLV_doubleClicked(QModelIndex)));
-
+
availableLV->installEventFilter(this);
selectedLV->installEventFilter(this);
}
{
if (!idx.isValid())
return;
-
+
selectedHasFocus_ = false;
updateHook();
}
{
if (!idx.isValid())
return;
-
+
selectedHasFocus_ = true;
updateHook();
}
QModelIndex const idxToAdd = selIdx.first();
QModelIndex const idx = selectedLV->currentIndex();
int const srows = selectedModel->rowCount();
-
+
QMap<int, QVariant> qm = availableModel->itemData(idxToAdd);
insertRowToSelected(srows, qm);
-
+
selectionChanged(); //signal
if (idx.isValid())
selectedLV->setCurrentIndex(idx);
-
+
updateHook();
}
QModelIndex idx = selIdx.first();
selectedModel->removeRow(idx.row());
selectionChanged(); //signal
-
+
int nrows = selectedLV->model()->rowCount();
if (idx.row() == nrows) //was last item on list
idx = idx.sibling(idx.row() - 1, idx.column());
-
+
if (nrows > 1)
selectedLV->setCurrentIndex(idx);
else if (nrows == 1)
insertRowToSelected(pos + 1, qms);
selectionChanged(); //signal
-
+
selectedLV->setCurrentIndex(idx.sibling(idx.row() + 1, idx.column()));
selectedHasFocus_ = true;
updateHook();
{
if (isSelected(idx) || !addPB->isEnabled())
return;
-
+
if (idx.isValid())
selectedHasFocus_ = false;
addPB_clicked();
event->accept();
return true;
}
+ else if (keyPressed == Qt::Key_Right) {
+ focusAndHighlight(selectedLV);
+ event->accept();
+ return true;
+ }
} else if (etype == QEvent::FocusIn) {
if (selectedHasFocus_) {
selectedHasFocus_ = false;
return true;
}
}
+ else if (keyPressed == Qt::Key_Left) {
+ focusAndHighlight(availableLV);
+ event->accept();
+ return true;
+ }
} else if (etype == QEvent::FocusIn) {
if (!selectedHasFocus_) {
selectedHasFocus_ = true;