git-svn-id: svn://db.shs.com.ru/libs@161 a8b55f48-bf90-11e4-a774-851b48703e85

This commit is contained in:
2017-02-02 08:52:24 +00:00
parent dfb021c228
commit 0932e6ecf4
20 changed files with 663 additions and 432 deletions

View File

@@ -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);
}