1
0
forked from BRT/arc
arc/models/auto_payment/UiElement.cpp
2025-04-27 06:16:54 +04:00

48 lines
1.6 KiB
C++

//
// Created by AmirS on 26.04.2025.
//
#include "UiElement.h"
#include <QXmlStreamReader>
#include <QRegularExpression>
#include <utility>
UiElement::UiElement(const int x1, const int y1, const int x2, const int y2, QString text, QString className,
const bool clickable)
: m_x1(x1), m_y1(y1), m_x2(x2), m_y2(y2), m_text(std::move(text)), m_className(std::move(className)),
m_clickable(clickable) {
}
static const QRegularExpression boundsRegex(R"(\[([0-9]+),([0-9]+)\]\[([0-9]+),([0-9]+)\])");
UiElement UiElement::fromXmlNode(const QXmlStreamReader &xmlReader) {
int x1 = 0, y1 = 0, x2 = 0, y2 = 0;
QString text, className;
bool clickable = false;
if (xmlReader.attributes().hasAttribute("bounds")) {
QString bounds = xmlReader.attributes().value("bounds").toString();
QRegularExpressionMatch match = boundsRegex.match(bounds);
if (match.hasMatch()) {
x1 = match.captured(1).toInt();
y1 = match.captured(2).toInt();
x2 = match.captured(3).toInt();
y2 = match.captured(4).toInt();
}
}
if (xmlReader.attributes().hasAttribute("text")) {
text = xmlReader.attributes().value("text").toString();
}
if (xmlReader.attributes().hasAttribute("class")) {
className = xmlReader.attributes().value("class").toString();
}
if (xmlReader.attributes().hasAttribute("clickable")) {
clickable = xmlReader.attributes().value("clickable").toString() == "true";
}
return UiElement(x1, y1, x2, y2, text, className, clickable);
}