89 lines
2.1 KiB
C++
89 lines
2.1 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 = ItemUtils::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 = ItemUtils::generateTxtFromDateItemModel(m_model, QDateTime::currentDateTime());
|
|
applyModify();
|
|
return true;
|
|
}
|
|
|
|
auto now = QDateTime::currentDateTime();
|
|
auto str = ItemUtils::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;
|
|
} |