142 lines
5.5 KiB
C++
142 lines
5.5 KiB
C++
#include "piqt.h"
|
|
#include "qvariantedit.h"
|
|
#if QT_VERSION >= 0x050200
|
|
# include <QGeoCoordinate>
|
|
#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<QColor>()));
|
|
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<QAD::Enum>()) return PIVariant(QAD2PIEnum(v.value<QAD::Enum>()));
|
|
if (v.canConvert<QAD::File>()) return PIVariant(QAD2PIFile(v.value<QAD::File>()));
|
|
if (v.canConvert<QAD::Dir>()) return PIVariant(QAD2PIDir(v.value<QAD::Dir>()));
|
|
if (v.canConvert<QAD::IODevice>()) return PIVariant(QAD2PIIODevice(v.value<QAD::IODevice>()));
|
|
if (v.canConvert<QAD::MathVector>()) return PIVariant(Q2PIMathVector(v.value<QAD::MathVector>()));
|
|
if (v.canConvert<QAD::MathMatrix>()) return PIVariant(Q2PIMathMatrix(v.value<QAD::MathMatrix>()));
|
|
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
|