75a55bcd389c559b402a45b13d3343a9e77a7f5b
[emufront] / src / delegates / comboboxdelegate.cpp
1 #include <QtGui>
2 #include "comboboxdelegate.h"
3 #include "emufrontquerymodel.h"
4 #include "emufrontobject.h"
5
6 ComboBoxDelegate::ComboBoxDelegate(int column, EmuFrontQueryModel *model, QWidget *parent) :
7     QStyledItemDelegate(parent), column(column), model(model)
8 { }
9
10 void ComboBoxDelegate::paint(QPainter *painter, const QStyleOptionViewItem &option, const QModelIndex &index) const
11 {
12     if (index.column() != column) {
13         QStyledItemDelegate::paint(painter, option, index);
14         return;
15     }
16
17     int objid = index.model()->data(index,  Qt::DisplayRole).toInt();
18     EmuFrontObject *efo = model->getObject(objid);
19     QString txt = efo->getName();
20     painter->save();
21     //initStyleOption(&option, index);
22     painter->drawText(option.rect, txt);
23     painter->restore();
24 }
25
26 //QSize ComboBoxDelegate::sizeHint(const QStyleOptionViewItem &option, const QModelIndex &index) const { }
27
28 QWidget* ComboBoxDelegate::createEditor(QWidget *parent, const QStyleOptionViewItem &option, const QModelIndex &index) const
29 {
30     if (index.column() != column) {
31         return QStyledItemDelegate::createEditor(parent, option, index);
32     }
33
34     QComboBox *editor = new QComboBox(parent);
35     editor->setEditable(false);
36     editor->setModel(model);
37     connect(editor, SIGNAL(editingFinished()), this, SLOT(commitAndCloseEditor()));
38     return editor;
39 }
40
41 void ComboBoxDelegate::setEditorData(QWidget *editor, const QModelIndex &index) const
42 {
43
44 }
45
46 void ComboBoxDelegate::setModelData(QWidget *editor, QAbstractItemModel *model, const QModelIndex &index) const
47 {
48 }
49
50 void ComboBoxDelegate::commitAndCloseEditor()
51 {
52 }
53