Files
VX5_KRO_GearPump/scene/PicDateItem.cpp
T

89 lines
2.0 KiB
C++

#include "PicDateItem.h"
#include <QDebug>
#include <QRegExp>
#include "LogInfo.h"
#include "ItemCommon.h"
PicDateItem::PicDateItem(QGraphicsItem *parent, QGraphicsScene *scene, const SourceType type)
:PicTextItem(parent, scene, type)
{
m_timer.setInterval(20);
connect(&m_timer, &QTimer::timeout, [this](){
updateDatetimeStr();
});
// m_timer.start();
}
QVariant PicDateItem::source()
{
return m_model.datetimePattern;
}
void PicDateItem::setSource(QVariant var)
{
m_model.datetimePattern = var.toString();
if(m_model.datetimePattern.isEmpty())
return;
m_currDateTimeStr = generateTxtFromDateItemModel(m_model, QDateTime::currentDateTime());
applyModify();
}
void PicDateItem::setModel(DateItemModel model)
{
m_model = std::move(model);
setSource(m_model.datetimePattern);
}
const DateItemModel& PicDateItem::model() const
{
return m_model;
}
bool PicDateItem::updateDatetimeStr()
{
if (m_model.datetimePattern.isEmpty())
return false;
if(m_currDateTimeStr.isEmpty()) {
m_currDateTimeStr = generateTxtFromDateItemModel(m_model, QDateTime::currentDateTime());
applyModify();
return true;
}
auto now = QDateTime::currentDateTime();
auto str = generateTxtFromDateItemModel(m_model, now);
if(str == m_currDateTimeStr) {
return false;
}
m_currDateTimeStr = str;
applyModify();
return true;
}
void PicDateItem::setCustomAttrs(const QXmlStreamAttributes &attrs)
{
// 结构类似这样
// weeksMap = "MON<br>TUR<br>WED<br>TUE<br>THU<br>FRI<br>SAT<br>SUN"
// yearsMap = "2023<subbr>2023年<br>2024<subbr>2024年<br>2025<subbr>2025年"
auto m = DateItemModel();
DateItemModel::loadFromXml(m, attrs);
setModel(std::move(m));
}
void PicDateItem::saveCustomAttrs(QXmlStreamAttributes &attrs)
{
DateItemModel::saveToXml(m_model, attrs);
}
QImage PicDateItem::itemImage()
{
if(m_model.datetimePattern.isEmpty())
return QImage();
auto ret = strToImage(m_currDateTimeStr);
return ret;
}