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

@@ -3,9 +3,6 @@
#include <QFileDialog>
__QVariantEditRegistrator__ __registrator__;
StringListEdit::~StringListEdit() {
delete combo;
delete butt_add;
@@ -289,21 +286,21 @@ void QVariantEdit::_recreate(const QVariant & new_value) {
default: break;
}
if (!_cur_edit) {
if (new_value.canConvert<QVariantEdit::EnumType>()) {
if (new_value.canConvert<QAD::Enum>()) {
_enum = new EComboBox(this);
_setEnum(new_value.value<QVariantEdit::EnumType>());
_setEnum(new_value.value<QAD::Enum>());
_cur_edit = _enum;
connect(_enum, SIGNAL(currentIndexChanged(int)), this, SLOT(_changed()));
}
if (new_value.canConvert<QVariantEdit::FileType>()) {
if (new_value.canConvert<QAD::File>()) {
_path = new PathEdit(this);
_setFile(new_value.value<QVariantEdit::FileType>());
_setFile(new_value.value<QAD::File>());
_cur_edit = _path;
connect(_path, SIGNAL(valueChanged()), this, SLOT(_changed()));
}
if (new_value.canConvert<QVariantEdit::DirType>()) {
if (new_value.canConvert<QAD::Dir>()) {
_path = new PathEdit(this);
_setDir(new_value.value<QVariantEdit::DirType>());
_setDir(new_value.value<QAD::Dir>());
_cur_edit = _path;
connect(_path, SIGNAL(valueChanged()), this, SLOT(_changed()));
}
@@ -336,28 +333,29 @@ QVariant QVariantEdit::value() const {
case QVariant::Time: return _date->time();
case QVariant::DateTime: return _date->dateTime();
default:
if (_value.canConvert<QVariantEdit::EnumType>() && _enum) {
QVariantEdit::EnumType ret;
if (_value.canConvert<QAD::Enum>() && _enum) {
QAD::Enum ret;
for (int i = 0; i < _enum->count(); ++i)
ret.enum_list << _enum->itemText(i);
ret.value = _enum->currentText();
return QVariant::fromValue<QVariantEdit::EnumType>(ret);
ret.enum_list << QAD::Enumerator(_enum->itemData(i).toInt(), _enum->itemText(i));
ret.enum_name = _enum->property("enum_name").toString();
ret.selected = _enum->currentText();
return QVariant::fromValue<QAD::Enum>(ret);
}
if (_value.canConvert<QVariantEdit::FileType>() && _path) {
if (_value.canConvert<QAD::File>() && _path) {
if (!_path->is_dir) {
QVariantEdit::FileType ret;
QAD::File ret;
ret.file = _path->value();
ret.filter = _path->filter;
ret.is_abs = _path->is_abs;
return QVariant::fromValue<QVariantEdit::FileType>(ret);
return QVariant::fromValue<QAD::File>(ret);
}
}
if (_value.canConvert<QVariantEdit::DirType>() && _path) {
if (_value.canConvert<QAD::Dir>() && _path) {
if (_path->is_dir) {
QVariantEdit::DirType ret;
QAD::Dir ret;
ret.dir = _path->value();
ret.is_abs = _path->is_abs;
return QVariant::fromValue<QVariantEdit::DirType>(ret);
return QVariant::fromValue<QAD::Dir>(ret);
}
}
}
@@ -377,10 +375,10 @@ void QVariantEdit::setValue(const QVariant & v) {
if (_rect) {_rect->setValue(v.toRectF());}
if (_point) {_point->setValue(v.toPointF());}
if (_path) {
if (_path->is_dir) _setDir(v.value<QVariantEdit::DirType>());
else _setFile(v.value<QVariantEdit::FileType>());
if (_path->is_dir) _setDir(v.value<QAD::Dir>());
else _setFile(v.value<QAD::File>());
}
if (_enum) {_setEnum(v.value<QVariantEdit::EnumType>());}
if (_enum) {_setEnum(v.value<QAD::Enum>());}
if (_cur_edit) _cur_edit->blockSignals(false);
}
@@ -414,12 +412,14 @@ void QVariantEdit::_newPath() {
}
void QVariantEdit::_setEnum(const QVariantEdit::EnumType & v) {
void QVariantEdit::_setEnum(const QAD::Enum & v) {
_enum->clear();
_enum->addItems(v.enum_list);
_enum->setProperty("enum_name", v.enum_name);
foreach (const QAD::Enumerator & e, v.enum_list)
_enum->addItem(e.name, QVariant(e.value));
int i(0);
for (i = 0; i < _enum->count(); ++i)
if (_enum->itemText(i) == v.value) {
if (_enum->itemText(i) == v.selected) {
_enum->setCurrentIndex(i);
break;
}
@@ -428,7 +428,7 @@ void QVariantEdit::_setEnum(const QVariantEdit::EnumType & v) {
}
void QVariantEdit::_setFile(const FileType & v) {
void QVariantEdit::_setFile(const QAD::File & v) {
_path->is_dir = false;
_path->setValue(v.file);
_path->filter = v.filter;
@@ -436,7 +436,7 @@ void QVariantEdit::_setFile(const FileType & v) {
}
void QVariantEdit::_setDir(const DirType & v) {
void QVariantEdit::_setDir(const QAD::Dir & v) {
_path->is_dir = true;
_path->setValue(v.dir);
_path->is_abs = v.is_abs;