git-svn-id: svn://db.shs.com.ru/libs@161 a8b55f48-bf90-11e4-a774-851b48703e85
This commit is contained in:
@@ -5,10 +5,20 @@
|
||||
#include <QBrush>
|
||||
#include <QColor>
|
||||
#include "qvariantedit.h"
|
||||
#include "qad_types.h"
|
||||
|
||||
|
||||
using namespace CDUtils;
|
||||
|
||||
|
||||
QList<QAD::Enumerator> CDEnum2QADEnum(const PIVector<CDType::Enumerator> & el) {
|
||||
QList<QAD::Enumerator> ret;
|
||||
piForeachC (CDType::Enumerator & e, el)
|
||||
ret << QAD::Enumerator(e.first, PI2QString(e.second));
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
||||
CDKItemModel::CDKItemModel(QObject *parent) : QAbstractItemModel(parent) {
|
||||
root = 0;
|
||||
internalRebuild();
|
||||
@@ -223,11 +233,11 @@ QVariant CDKItem::value(CDType t, int role) const {
|
||||
if (t.type() == "n") return t.toInt();
|
||||
if (t.type() == "b") return t.toBool();
|
||||
if (t.type() == "e") {
|
||||
QVariantEdit::EnumType et;
|
||||
et.enum_list = PI2QStringList(t.enumValues());
|
||||
et.value = et.enum_list.at(t.toInt());//et.enum_list.indexOf("");
|
||||
if (role == Qt::EditRole)return QVariant::fromValue<QVariantEdit::EnumType>(et);
|
||||
else return et.value;
|
||||
QAD::Enum et;
|
||||
et.enum_list = CDEnum2QADEnum(t.enumValues());
|
||||
et.selectValue(t.toInt());
|
||||
if (role == Qt::EditRole) return QVariant::fromValue<QAD::Enum>(et);
|
||||
else return et.selectedName();
|
||||
}
|
||||
return PI2QString(t.value());
|
||||
}
|
||||
@@ -296,9 +306,9 @@ void CDKDelegate::setEditorData(QWidget *editor, const QModelIndex &index) const
|
||||
void CDKDelegate::setModelData(QWidget *editor, QAbstractItemModel *model, const QModelIndex &index) const {
|
||||
QVariantEdit *edit = static_cast<QVariantEdit*>(editor);
|
||||
QVariant v = edit->value();
|
||||
if (v.canConvert<QVariantEdit::EnumType>()) {
|
||||
QVariantEdit::EnumType et = v.value<QVariantEdit::EnumType>();
|
||||
model->setData(index, et.enum_list.indexOf(et.value), Qt::EditRole);
|
||||
if (v.canConvert<QAD::Enum>()) {
|
||||
QAD::Enum et = v.value<QAD::Enum>();
|
||||
model->setData(index, et.selectedValue(), Qt::EditRole);
|
||||
} else model->setData(index, v, Qt::EditRole);
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user