22 #include "customfieldsdelegate.h"
24 #include "customfieldsmodel.h"
30 #include <QDateTimeEdit>
35 CustomFieldsDelegate::CustomFieldsDelegate( QObject *parent )
36 : QStyledItemDelegate( parent )
40 CustomFieldsDelegate::~CustomFieldsDelegate()
44 QWidget* CustomFieldsDelegate::createEditor( QWidget *parent,
const QStyleOptionViewItem &item,
const QModelIndex &index )
const
46 if ( index.column() == 1 ) {
47 const CustomField::Type type =
static_cast<CustomField::Type
>( index.data( CustomFieldsModel::TypeRole ).toInt() );
50 case CustomField::TextType:
52 return QStyledItemDelegate::createEditor( parent, item, index );
54 case CustomField::NumericType:
56 QSpinBox *editor =
new QSpinBox( parent );
57 editor->setFrame(
false );
58 editor->setAutoFillBackground(
true );
62 case CustomField::BooleanType:
64 QCheckBox *editor =
new QCheckBox( parent );
68 case CustomField::DateType:
70 QDateEdit *editor =
new QDateEdit( parent );
71 editor->setFrame(
false );
72 editor->setAutoFillBackground(
true );
76 case CustomField::TimeType:
78 QTimeEdit *editor =
new QTimeEdit( parent );
79 editor->setFrame(
false );
80 editor->setAutoFillBackground(
true );
84 case CustomField::DateTimeType:
86 QDateTimeEdit *editor =
new QDateTimeEdit( parent );
87 editor->setFrame(
false );
88 editor->setAutoFillBackground(
true );
94 return QStyledItemDelegate::createEditor( parent, item, index );
98 void CustomFieldsDelegate::setEditorData( QWidget *editor,
const QModelIndex &index )
const
100 if ( index.column() == 1 ) {
101 const CustomField::Type type =
static_cast<CustomField::Type
>( index.data( CustomFieldsModel::TypeRole ).toInt() );
104 case CustomField::TextType:
105 QStyledItemDelegate::setEditorData( editor, index );
107 case CustomField::NumericType:
109 QSpinBox *widget = qobject_cast<QSpinBox*>( editor );
110 widget->setValue( index.data( Qt::EditRole ).toInt() );
113 case CustomField::BooleanType:
115 QCheckBox *widget = qobject_cast<QCheckBox*>( editor );
116 widget->setChecked( index.data( Qt::EditRole ).toString() == QLatin1String(
"true" ) );
119 case CustomField::DateType:
121 QDateEdit *widget = qobject_cast<QDateEdit*>( editor );
122 widget->setDisplayFormat( QLatin1String(
"dd.MM.yyyy" ) );
123 widget->setDate( QDate::fromString( index.data( Qt::EditRole ).toString(), Qt::ISODate ) );
126 case CustomField::TimeType:
128 QTimeEdit *widget = qobject_cast<QTimeEdit*>( editor );
129 widget->setDisplayFormat( QLatin1String(
"hh:mm" ) );
130 widget->setTime( QTime::fromString( index.data( Qt::EditRole ).toString(), Qt::ISODate ) );
133 case CustomField::DateTimeType:
135 QDateTimeEdit *widget = qobject_cast<QDateTimeEdit*>( editor );
136 widget->setDisplayFormat( QLatin1String(
"dd.MM.yyyy hh:mm" ) );
137 widget->setDateTime( QDateTime::fromString( index.data( Qt::EditRole ).toString(), Qt::ISODate ) );
142 QStyledItemDelegate::setEditorData( editor, index );
146 void CustomFieldsDelegate::setModelData( QWidget *editor, QAbstractItemModel *model,
const QModelIndex &index )
const
148 if ( index.column() == 1 ) {
149 const CustomField::Type type =
static_cast<CustomField::Type
>( index.data( CustomFieldsModel::TypeRole ).toInt() );
152 case CustomField::TextType:
153 QStyledItemDelegate::setModelData( editor, model, index );
155 case CustomField::NumericType:
157 QSpinBox *widget = qobject_cast<QSpinBox*>( editor );
158 model->setData( index, QString::number( widget->value() ) );
161 case CustomField::BooleanType:
163 QCheckBox *widget = qobject_cast<QCheckBox*>( editor );
164 model->setData( index, widget->isChecked() ? QLatin1String(
"true" ) : QLatin1String(
"false" ) );
167 case CustomField::DateType:
169 QDateEdit *widget = qobject_cast<QDateEdit*>( editor );
170 model->setData( index, widget->date().toString( Qt::ISODate ) );
173 case CustomField::TimeType:
175 QTimeEdit *widget = qobject_cast<QTimeEdit*>( editor );
176 model->setData( index, widget->time().toString( Qt::ISODate ) );
179 case CustomField::DateTimeType:
181 QDateTimeEdit *widget = qobject_cast<QDateTimeEdit*>( editor );
182 model->setData( index, widget->dateTime().toString( Qt::ISODate ) );
187 QStyledItemDelegate::setModelData( editor, model, index );
191 void CustomFieldsDelegate::paint( QPainter *painter,
const QStyleOptionViewItem &option,
const QModelIndex &index )
const
194 QStyledItemDelegate::paint( painter, option, index );