qad_types доработки

This commit is contained in:
Бычков Андрей
2022-06-30 14:28:36 +03:00
parent af530b582c
commit 2fb937a090
3 changed files with 44 additions and 88 deletions

View File

@@ -4,7 +4,7 @@ cmake_policy(SET CMP0072 NEW) # FindOpenGL prefers GLVND by default
project(qad) project(qad)
set(qad_MAJOR 2) set(qad_MAJOR 2)
set(qad_MINOR 8) set(qad_MINOR 8)
set(qad_REVISION 0) set(qad_REVISION 1)
set(qad_SUFFIX ) set(qad_SUFFIX )
set(qad_COMPANY SHS) set(qad_COMPANY SHS)
set(qad_DOMAIN org.SHS) set(qad_DOMAIN org.SHS)

View File

@@ -65,61 +65,61 @@ QAD::Enum::Enum(const QMetaEnum & meta, int selected) {
int QAD::Enum::selectedValue() const { int QAD::Enum::selectedValue() const {
foreach (const Enumerator & e, enum_list) for (const Enumerator & e : enum_list) {
if (e.name == selected) if (e.name == selected) return e.value;
return e.value; }
return 0; return 0;
} }
bool QAD::Enum::selectValue(int v) { bool QAD::Enum::selectValue(int v) {
foreach (const Enumerator & e, enum_list) for (const Enumerator & e : enum_list) {
if (e.value == v) { if (e.value == v) {
selected = e.name; selected = e.name;
return true; return true;
} }
}
return false; return false;
} }
bool QAD::Enum::selectName(const QString & n) { bool QAD::Enum::selectName(const QString & n) {
foreach (const Enumerator & e, enum_list) for (const Enumerator & e : enum_list) {
if (e.name == n) { if (e.name == n) {
selected = e.name; selected = e.name;
return true; return true;
} }
}
return false; return false;
} }
int QAD::Enum::value(const QString & n) const { int QAD::Enum::value(const QString & n) const {
foreach (const Enumerator & e, enum_list) for (const Enumerator & e : enum_list) {
if (e.name == n) if (e.name == n) return e.value;
return e.value; }
return 0; return 0;
} }
QString QAD::Enum::name(int v) const { QString QAD::Enum::name(int v) const {
foreach (const Enumerator & e, enum_list) for (const Enumerator & e : enum_list) {
if (e.value == v) if (e.value == v) return e.name;
return e.name; }
return QString(); return QString();
} }
QList<int> QAD::Enum::values() const { QList<int> QAD::Enum::values() const {
QList<int> ret; QList<int> ret;
foreach (const Enumerator & e, enum_list) for (const Enumerator & e : enum_list) ret << e.value;
ret << e.value;
return ret; return ret;
} }
QStringList QAD::Enum::names() const { QStringList QAD::Enum::names() const {
QStringList ret; QStringList ret;
foreach (const Enumerator & e, enum_list) for (const Enumerator & e : enum_list) ret << e.name;
ret << e.name;
return ret; return ret;
} }
@@ -137,8 +137,7 @@ QAD::Enum & QAD::Enum::operator <<(const QString & v) {
QAD::Enum & QAD::Enum::operator <<(const QStringList & v) { QAD::Enum & QAD::Enum::operator <<(const QStringList & v) {
foreach (const QString & s, v) for (const QString & s : v) (*this) << s;
(*this) << s;
return *this; return *this;
} }
@@ -151,32 +150,8 @@ QString QAD::IODevice::toString() const {
QVariant v; QVariant v;
v.setValue(*this); v.setValue(*this);
(*(__QADTypesRegistrator__::instance()->toString_funcs[qMetaTypeId<QAD::IODevice>()]))(v, s); (*(__QADTypesRegistrator__::instance()->toString_funcs[qMetaTypeId<QAD::IODevice>()]))(v, s);
return s;
} else {
// s += "IODevice(" + prefix + ", mode=";
// int rwc = 0;
// if (mode & QIODevice::ReadOnly) {s += "r"; ++rwc;}
// if (mode & QIODevice::WriteOnly) {s += "w"; ++rwc;}
// if (rwc == 1) s += "o";
// if (options != 0) {
// s += ", flags=";
// if (options & 1)
// s += "br";
// if (options & 2)
// if (options & 1)
// s+= "|";
// s += "bw";
// }
// PropertyStorage ps = props;
// foreach (const PropertyStorage::Property & p, ps) {
// QString vs = p.value.toString();
// if (p.value.type() == QVariant::StringList)
// vs = p.value.toStringList().join(";");
// s += ", " + p.name + "=\"" + vs + "\"";
// }
// s += ")";
return s;
} }
return s;
} }
@@ -231,8 +206,7 @@ QMetaType
QString uniqueName(QString n, const QStringList & names) { QString uniqueName(QString n, const QStringList & names) {
if (!names.contains(n)) if (!names.contains(n)) return n;
return n;
QString num; QString num;
while (!n.isEmpty()) { while (!n.isEmpty()) {
if (n.right(1)[0].isDigit()) { if (n.right(1)[0].isDigit()) {
@@ -240,60 +214,42 @@ QString uniqueName(QString n, const QStringList & names) {
n.chop(1); n.chop(1);
} else break; } else break;
} }
if (!n.endsWith('_')) n += '_'; if (!n.endsWith('_') && num.isEmpty()) n += '_';
int in = num.toInt() + 1; int in = num.toInt() + 1;
QString nn = n + QString::number(in).rightJustified(3, '0'); QString nn = n + QString::number(in);
while (names.contains(nn)) while (names.contains(nn))
nn = n + QString::number(++in).rightJustified(3, '0'); nn = n + QString::number(++in);
return nn; return nn;
} }
int fontHeight(const QWidget * w) { int fontHeight(const QWidget * window) {
#ifdef Q_OS_ANDROID #ifdef Q_OS_ANDROID
static int ret = QApplication::fontMetrics().size(0, "0").height(); static int ret = QApplication::fontMetrics().height();
return ret; return ret;
#else #else
# if QT_VERSION >= 0x050000 # if QT_VERSION_MAJOR == 6
//qDebug() << "fontHeight" << w; double add_scale = 0.8;
if (w) { # else
QWidget * pw = w->window(); double add_scale = 1.0;
if (pw) {
/*QWindow * wnd = pw->windowHandle();
//qDebug() << "wnd" << wnd;
if (wnd) {
QScreen * s = wnd->screen();
qDebug() << "s" << s;
if (s) {
qDebug() << "scales:";
qDebug() << QApplication::fontMetrics().size(0, "0").height() << QApplication::fontMetrics().xHeight();
qDebug() << s->logicalDotsPerInch() << s->logicalDotsPerInch()/96.*QApplication::font().pointSizeF();
}
}*/
return QFontMetrics(QApplication::font(), pw).size(0, "0").height()
#if QT_VERSION_MAJOR == 6
/ 1.25
#endif
;
}
}
# endif # endif
#endif //qDebug() << "fontHeight" << w;
#if QT_VERSION_MAJOR <= 5 if (window) {
return QApplication::fontMetrics().size(0, "0").height(); QWidget * pw = window->window();
#else if (pw) return QFontMetrics(pw->font()).height() * add_scale;
return QFontMetricsF(QApplication::font()).size(0, "0").height(); }
return QFontMetrics(QApplication::font()).height() * add_scale;
#endif #endif
} }
int lineThickness(const QWidget * w) { int lineThickness(const QWidget * window) {
return qMax<int>(qRound(fontHeight(w) / 15.), 1); return qMax<int>(qRound(fontHeight(window) / 15.), 1);
} }
QSize preferredIconSize(float x, const QWidget * w) { QSize preferredIconSize(float x, const QWidget * window) {
int s = qMax<int>(8, qRound(fontHeight(w) * x)); int s = qMax<int>(8, qRound(fontHeight(window) * x));
#ifdef Q_OS_MACOS #ifdef Q_OS_MACOS
s /= 1.25; s /= 1.25;
#endif #endif
@@ -304,8 +260,8 @@ QSize preferredIconSize(float x, const QWidget * w) {
} }
double appScale(const QWidget * w) { double appScale(const QWidget * window) {
return qMax<double>(fontHeight(w) / 15., 1.); return qMax<double>(fontHeight(window) / 15., 1.);
} }

View File

@@ -219,10 +219,10 @@ QAD_UTILS_EXPORT
typeFromLetter(const QString & l); typeFromLetter(const QString & l);
QAD_UTILS_EXPORT QString uniqueName(QString n, const QStringList & names); QAD_UTILS_EXPORT QString uniqueName(QString n, const QStringList & names);
QAD_UTILS_EXPORT int fontHeight(const QWidget * w = 0); QAD_UTILS_EXPORT int fontHeight(const QWidget * window = nullptr);
QAD_UTILS_EXPORT int lineThickness(const QWidget * w = 0); QAD_UTILS_EXPORT int lineThickness(const QWidget * window = nullptr);
QAD_UTILS_EXPORT QSize preferredIconSize(float x = 1.f, const QWidget * w = 0); QAD_UTILS_EXPORT QSize preferredIconSize(float x = 1.f, const QWidget * window = nullptr);
QAD_UTILS_EXPORT double appScale(const QWidget * w = 0); QAD_UTILS_EXPORT double appScale(const QWidget * window = nullptr);
QAD_UTILS_EXPORT void enableHighDPI(); QAD_UTILS_EXPORT void enableHighDPI();
QAD_UTILS_EXPORT const QMetaObject * getQtMetaObject(); QAD_UTILS_EXPORT const QMetaObject * getQtMetaObject();