git-svn-id: svn://db.shs.com.ru/libs@161 a8b55f48-bf90-11e4-a774-851b48703e85
This commit is contained in:
@@ -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;
|
||||
|
||||
Reference in New Issue
Block a user