qt/LedOK/program/etable.cpp
2025-05-23 18:35:00 +08:00

83 lines
2.2 KiB
C++

#include "etable.h"
#include "gutil/qgui.h"
#include "main.h"
#include <QSpinBox>
#include <QLineEdit>
#include <QPainter>
ETable::ETable(EBase *multiWin) : EBase(multiWin) {
mType = EBase::Table;
}
ETable::ETable(const JObj &json, EBase *multiWin) : EBase(multiWin) {
mType = EBase::Table;
setBaseAttr(json);
url = json["url"].toString();
}
void ETable::paint(QPainter *painter, const QStyleOptionGraphicsItem *a, QWidget *b) {
auto inner = innerRect();
painter->setRenderHints(QPainter::Antialiasing|QPainter::SmoothPixmapTransform);
//painter->drawImage(QRectF(inner.width()/2, inner.height()/2, maskW, maskH), holder());
EBase::paint(painter, a, b);
}
QWidget* ETable::attrWgt() {
auto wgtAttr = new QWidget;
auto vBox = new VBox(wgtAttr);
vBox->setContentsMargins(6, 0, 6, 0);
if(mMultiWin) vBox->setSpacing(3);
addBaseAttrWgt(vBox);
auto hBox = new HBox(vBox);
hBox->addLabel(translate("","Basic Properties"));
auto line = new QFrame;
line->setFrameShape(QFrame::HLine);
line->setFrameShadow(QFrame::Sunken);
hBox->addWidget(line, 1);
hBox = new HBox(vBox);
hBox->addSpacing(6);
hBox->addLabel("URL:");
auto url_fd = new QLineEdit(url);
hBox->addWidget(url_fd);
connect(url_fd, &QLineEdit::textChanged, this, [this](const QString &text) {
url = text;
});
hBox = new HBox(vBox);
auto lb = hBox->addLabel(tr("Refresh every")+":");
lb->setMinimumWidth(70);
lb->setAlignment(Qt::AlignVCenter|Qt::AlignRight);
auto edRefresh = new QSpinBox;
edRefresh->setRange(0, 99999);
edRefresh->setValue(refresh);
connect(edRefresh, &QSpinBox::valueChanged, this, [=](int value) {
refresh = value;
});
hBox->addWidget(edRefresh);
hBox->addSpacing(-3);
hBox->addLabel("s");
hBox->addStretch();
vBox->addStretch();
return wgtAttr;
}
JObj ETable::attrJson() const {
JObj obj;
addBaseAttr(obj);
obj["elementType"] = "Table";
obj["url"] = url;
obj["zoom"] = zoom;
obj["refreshSec"] = refresh;
obj["offX"] = _x;
obj["offY"] = _y;
obj["scaleX"] = scaleX;
obj["scaleY"] = scaleY;
return obj;
}