X-Git-Url: http://vcs.maemo.org/git/?a=blobdiff_plain;f=src%2Fdelegates%2Fcomboboxdelegate.cpp;h=d3993d7ea7cfd0e5c22f6693a19f28696ee90f81;hb=3bd66c1ceeffb38aaa71f9607d29014fb668ae2a;hp=bf639045f1b06614fd3ad86d03a3814652e8fd36;hpb=4cb90b39ede93044959777b9be45dbc88a61fdd9;p=emufront diff --git a/src/delegates/comboboxdelegate.cpp b/src/delegates/comboboxdelegate.cpp index bf63904..d3993d7 100644 --- a/src/delegates/comboboxdelegate.cpp +++ b/src/delegates/comboboxdelegate.cpp @@ -4,8 +4,8 @@ #include "emufrontquerymodel.h" #include "emufrontobject.h" -ComboBoxDelegate::ComboBoxDelegate(int viewColumn, QSqlQueryModel *model, int modelIdColumn, int modelDisplayColumn, QWidget *parent) : - QStyledItemDelegate(parent), viewColumn(viewColumn), model(model), modelIdColumn(modelIdColumn), modelDisplayColumn(modelDisplayColumn) +ComboBoxDelegate::ComboBoxDelegate(int viewColumn, QSqlQueryModel *cbmodel, int cbmodelIdColumn, int cbmodelDisplayColumn, QWidget *parent) : + QStyledItemDelegate(parent), viewColumn(viewColumn), cbmodel(cbmodel), cbmodelIdColumn(cbmodelIdColumn), cbmodelDisplayColumn(cbmodelDisplayColumn) { } void ComboBoxDelegate::paint(QPainter *painter, const QStyleOptionViewItem &option, const QModelIndex &index) const @@ -19,15 +19,16 @@ void ComboBoxDelegate::paint(QPainter *painter, const QStyleOptionViewItem &opti int objid = index.model()->data(index, Qt::DisplayRole).toInt(); // find matching object from QComboBox's model - QModelIndex startInd = model->index(0, modelIdColumn); - QModelIndexList indList = model->match(startInd, Qt::DisplayRole, objid); + QModelIndex startInd = cbmodel->index(0, cbmodelIdColumn); + QModelIndexList indList = cbmodel->match(startInd, Qt::DisplayRole, objid); + QModelIndex ind = indList.empty() ? QModelIndex() : - model->index(startInd.row(), modelDisplayColumn); + cbmodel->index(indList.first().row(), cbmodelDisplayColumn); QString txt = ind.isValid() ? - model->data(ind).toString() : ""; + cbmodel->data(ind).toString() : ""; painter->save(); //initStyleOption(&option, index); @@ -45,7 +46,8 @@ QWidget* ComboBoxDelegate::createEditor(QWidget *parent, const QStyleOptionViewI QComboBox *editor = new QComboBox(parent); editor->setEditable(false); - editor->setModel(model); + editor->setModel(cbmodel); + editor->setModelColumn(cbmodelDisplayColumn); connect(editor, SIGNAL(editingFinished()), this, SLOT(commitAndCloseEditor())); return editor; } @@ -61,9 +63,9 @@ void ComboBoxDelegate::setEditorData(QWidget *editor, const QModelIndex &index) int id = index.model()->data(index, Qt::DisplayRole).toInt(); QComboBox *cbox = qobject_cast(editor); // create a start index from combobox model - QModelIndex startInd = model->index(0, modelIdColumn); + QModelIndex startInd = cbmodel->index(0, cbmodelIdColumn); // search an index for selected item in parent view - QModelIndexList indList = model->match(startInd, Qt::DisplayRole, id); + QModelIndexList indList = cbmodel->match(startInd, Qt::DisplayRole, id); // if no match set no item selected int ind = indList.empty() ? -1 : indList.first().row(); cbox->setCurrentIndex(ind); @@ -76,8 +78,8 @@ void ComboBoxDelegate::setModelData(QWidget *editor, QAbstractItemModel *model, } QComboBox *cbox = qobject_cast(editor); if (cbox->currentIndex() == -1) return; - QModelIndex mi = model->index(cbox->currentIndex(), modelIdColumn); - int id = model->data(mi).toInt(); + QModelIndex mi = cbmodel->index(cbox->currentIndex(), cbmodelIdColumn); + int id = cbmodel->data(mi).toInt(); model->setData(index, id); }