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

This commit is contained in:
2018-12-19 07:34:10 +00:00
parent 907e553a4a
commit 521c32eccc
8 changed files with 150 additions and 11 deletions

View File

@@ -1,5 +1,5 @@
#include "propertystorage.h"
#include <QColor>
#include "qad_types.h"
bool PropertyStorage::isPropertyExists(const QString & _name) const {

View File

@@ -1,7 +1,13 @@
#ifndef PROPERTYSTORAGE_H
#define PROPERTYSTORAGE_H
#include "qad_types.h"
#include <QPointF>
#include <QRectF>
#include <QLineF>
#include <QVariant>
#include <QStringList>
#include <QDebug>
#include "chunkstream.h"
class PropertyStorage {

View File

@@ -13,8 +13,10 @@ bool __QADTypesRegistrator__::_inited = false;
__QADTypesRegistrator__::__QADTypesRegistrator__() {
if (_inited) return;
_inited = true;
qRegisterMetaType<QAD::Enumerator>("QAD::Enumerator");
qRegisterMetaTypeStreamOperators<QAD::Enumerator>("QAD::Enumerator");
qRegisterMetaType<QAD::Enum>("QAD::Enum");
qRegisterMetaTypeStreamOperators<QAD::Enum>("QAD::Enum");
@@ -24,11 +26,15 @@ __QADTypesRegistrator__::__QADTypesRegistrator__() {
qRegisterMetaType<QAD::Dir>("QAD::Dir");
qRegisterMetaTypeStreamOperators<QAD::Dir>("QAD::Dir");
qRegisterMetaType<QAD::IODevice>("QAD::IODevice");
qRegisterMetaTypeStreamOperators<QAD::IODevice>("QAD::IODevice");
#if QT_VERSION >= 0x050200
QMetaType::registerConverter<QAD::Enum, int>(&QAD::Enum::selectedValue);
QMetaType::registerConverter<QAD::Enum, QString>(&QAD::Enum::selectedName);
QMetaType::registerConverter<QAD::File, QString>(&QAD::File::toString);
QMetaType::registerConverter<QAD::Dir, QString>(&QAD::Dir::toString);
/// TDOD : //QMetaType::registerConverter<QAD::Dir, QString>(&QAD::IODevice::constructFullPath);
#endif
}
@@ -131,6 +137,7 @@ QVariant::Type typeFromLetter(const QString & l) {
if (ft == "e") return (QVariant::Type)qMetaTypeId<QAD::Enum>();
if (ft == "F") return (QVariant::Type)qMetaTypeId<QAD::File>();
if (ft == "D") return (QVariant::Type)qMetaTypeId<QAD::Dir>();
if (ft == "d") return (QVariant::Type)qMetaTypeId<QAD::IODevice>();
return QVariant::String;
}

View File

@@ -1,13 +1,7 @@
#ifndef QAD_TYPES_H
#define QAD_TYPES_H
#include <QPointF>
#include <QRectF>
#include <QLineF>
#include <QVariant>
#include <QStringList>
#include <QDebug>
#include "chunkstream.h"
#include "propertystorage.h"
namespace QAD {
@@ -53,6 +47,15 @@ namespace QAD {
bool is_abs;
};
struct IODevice {
IODevice(const QString & devece_prefix = QString(), const PropertyStorage & device_properties = PropertyStorage(), int open_mode = QIODevice::ReadWrite, int device_options = 0)
: prefix(devece_prefix), mode(open_mode), opts(device_options), props(device_properties) {}
QString prefix;
int mode;
int opts;
PropertyStorage props;
};
}
Q_DECLARE_METATYPE(QAD::Enumerator)
@@ -75,6 +78,31 @@ inline QDataStream & operator <<(QDataStream & s, const QAD::Dir & v) {s << v.di
inline QDataStream & operator >>(QDataStream & s, QAD::Dir & v) {s >> v.dir >> v.is_abs; return s;}
inline QDebug operator <<(QDebug s, const QAD::Dir & v) {s.nospace() << v.dir; return s.space();}
Q_DECLARE_METATYPE(QAD::IODevice)
inline QDataStream & operator <<(QDataStream & s, const QAD::IODevice & v) {s << v.prefix << v.mode << v.opts << v.props; return s;}
inline QDataStream & operator >>(QDataStream & s, QAD::IODevice & v) {s >> v.prefix >> v.mode >> v.opts >> v.props; return s;}
inline QDebug operator <<(QDebug d, const QAD::IODevice & v) {
QString s;
s += "IODevice(" + v.prefix + ", ";
int rwc = 0;
if (v.mode & QIODevice::ReadOnly) {s += "r"; ++rwc;}
if (v.mode & QIODevice::WriteOnly) {s += "w"; ++rwc;}
if (rwc == 1) s += "o";
if (v.opts != 0) {
if (v.opts & 1)
s += " br";
if (v.opts & 2)
s += " bw";
}
PropertyStorage ps = v.props;
foreach (const PropertyStorage::Property & p, ps) {
s += ", " + p.name + "=\"" + p.value.toString() + "\"";
}
s += ")";
d.noquote() << s;
return d;
}
class __QADTypesRegistrator__ {
public:
__QADTypesRegistrator__();