#include "piqt.h" #include "qvariantedit.h" #if QT_VERSION >= 0x050200 # include #endif const QAD::Enum PI2QADEnum(const PIVariantTypes::Enum & el) { QAD::Enum ret; piForeachC (PIVariantTypes::Enumerator & e, el.enum_list) ret << QAD::Enumerator(e.value, PI2QString(e.name)); ret.selectValue(el.selectedValue()); return ret; } const PIVariantTypes::Enum QAD2PIEnum(const QAD::Enum & el) { PIVariantTypes::Enum ret; foreach (const QAD::Enumerator & e, el.enum_list) ret << PIVariantTypes::Enumerator(e.value, Q2PIString(e.name)); ret.selectValue(el.selectedValue()); return ret; } const QVariant PI2QVariant(const PIVariant & v) { switch (v.type()) { case PIVariant::pivBool: return QVariant(v.toBool()); case PIVariant::pivChar: case PIVariant::pivUChar: case PIVariant::pivShort: case PIVariant::pivUShort: case PIVariant::pivInt: return QVariant(v.toInt()); case PIVariant::pivUInt: return QVariant(uint(v.toInt())); case PIVariant::pivLLong: return QVariant(v.toLLong()); case PIVariant::pivULLong: return QVariant(ullong(v.toLLong())); case PIVariant::pivFloat: return QVariant(v.toFloat()); case PIVariant::pivDouble: return QVariant(v.toDouble()); case PIVariant::pivLDouble: return QVariant(v.toDouble()); case PIVariant::pivByteArray: return QVariant(PI2QByteArray(v.toByteArray())); case PIVariant::pivString: return QVariant(PI2QString(v.toString())); case PIVariant::pivStringList: return QVariant(PI2QStringList(v.toStringList())); case PIVariant::pivTime: return QVariant(PI2QTime(v.toTime())); case PIVariant::pivDate: return QVariant(PI2QDate(v.toDate())); case PIVariant::pivDateTime: return QVariant(PI2QDateTime(v.toDateTime())); case PIVariant::pivEnum: return QVariant::fromValue(PI2QADEnum(v.toEnum())); case PIVariant::pivFile: return QVariant::fromValue(PI2QADFile(v.toFile())); case PIVariant::pivDir: return QVariant::fromValue(PI2QADDir(v.toDir())); case PIVariant::pivColor: return QVariant::fromValue(PI2QColor(v.toColor())); case PIVariant::pivPoint: return QVariant(PI2QPoint(v.toPoint())); case PIVariant::pivRect: return QVariant(PI2QRect(v.toRect())); case PIVariant::pivIODevice: return QVariant::fromValue(PI2QADIODevice(v.toIODevice())); case PIVariant::pivMathVector: return QVariant::fromValue(PI2QMathVector(v.toMathVector())); case PIVariant::pivMathMatrix: return QVariant::fromValue(PI2QMathMatrix(v.toMathMatrix())); //case PIVariant::pivSystemTime: return QVariant(v.to()); default: return QVariant(); } return QVariant(); } const PIVariant Q2PIVariant(const QVariant & v) { switch (v.type()) { case QVariant::Bool: return PIVariant(v.toBool()); case QVariant::Int: return PIVariant(v.toInt()); case QVariant::UInt: return PIVariant(v.toUInt()); case QVariant::LongLong: return PIVariant(v.toLongLong()); case QVariant::ULongLong: return PIVariant(v.toULongLong()); case QVariant::Double: return PIVariant(v.toDouble()); case QVariant::ByteArray: return PIVariant(Q2PIByteArray(v.toByteArray())); case QVariant::String: return PIVariant(Q2PIString(v.toString())); case QVariant::StringList: return PIVariant(Q2PIStringList(v.toStringList())); case QVariant::Time: return PIVariant(Q2PITime(v.toTime())); case QVariant::Date: return PIVariant(Q2PIDate(v.toDate())); case QVariant::DateTime: return PIVariant(Q2PIDateTime(v.toDateTime())); case QVariant::Color: return PIVariant(Q2PIColor(v.value())); case QVariant::Point: case QVariant::PointF: return PIVariant(Q2PIPoint(v.toPointF())); case QVariant::Rect: case QVariant::RectF: return PIVariant(Q2PIRect(v.toRectF())); default: break; } if (v.canConvert()) return PIVariant(QAD2PIEnum(v.value())); if (v.canConvert()) return PIVariant(QAD2PIFile(v.value())); if (v.canConvert()) return PIVariant(QAD2PIDir(v.value())); if (v.canConvert()) return PIVariant(QAD2PIIODevice(v.value())); if (v.canConvert()) return PIVariant(Q2PIMathVector(v.value())); if (v.canConvert()) return PIVariant(Q2PIMathMatrix(v.value())); return PIVariant(); } const PIVariantTypes::IODevice QAD2PIIODevice(const QAD::IODevice & v) { PIVariantTypes::IODevice d; d.set(Q2PIPropertyStorage(v.props)); d.prefix = Q2PIString(v.prefix); d.mode = v.mode; d.options = v.options; return d; } const QAD::IODevice PI2QADIODevice(const PIVariantTypes::IODevice & v) { return QAD::IODevice(PI2QString(v.prefix), PI2QPropertyStorage(v.get()), v.mode, v.options); } const QAD::File PI2QADFile(const PIVariantTypes::File & v) { return QAD::File(PI2QString(v.file), PI2QString(v.filter), v.is_abs, v.is_save); } const QAD::Dir PI2QADDir(const PIVariantTypes::Dir & v) { return QAD::Dir(PI2QString(v.dir), v.is_abs); } const PIVariantTypes::File QAD2PIFile(const QAD::File & v) { return PIVariantTypes::File(Q2PIString(v.file), Q2PIString(v.filter), v.is_abs, v.is_save); } const PIVariantTypes::Dir QAD2PIDir(const QAD::Dir & v) { return PIVariantTypes::Dir(Q2PIString(v.dir), v.is_abs); } #if QT_VERSION >= 0x050200 const QGeoCoordinate PI2QGeoPosition(const PIGeoPosition & v) { PIGeoPosition p(v); p.transformTo(PIGeoPosition::Cartesian); p.setEllipsoidModel(PIEllipsoidModel::WGS84Ellipsoid()); p.transformTo(PIGeoPosition::Geodetic); return QGeoCoordinate(p.latitudeGeodetic(), p.longitude(), p.height()); } const PIGeoPosition Q2PIGeoPosition(const QGeoCoordinate & v) { return PIGeoPosition(createVectorT3d(v.latitude(), v.longitude(), v.altitude()), PIGeoPosition::Geodetic); } #endif