#include "ViewModels.h" #include DateItemModel DateItemModel::createDefaultReplaceModel() { DateItemModel model; model.dataMap << "0" << "1" << "2" << "3" << "4" << "5" << "6" << "7" << "8" << "9" << "A" << "B" << "C" << "D" << "E" << "F"; for (int i = 1; i <= 31; ++i) { model.daysMap.append(QString("%1").arg(i, 2, 10, QChar('0'))); } for (int i = 1; i <= 12; ++i) { model.monthsMap.append(QString("%1").arg(i, 2, 10, QChar('0'))); } int startYear = QDate::currentDate().year(); for (int i = 0; i < 16; ++i) { model.yearsMap.insert(startYear + i, QString::number(startYear + i)); } model.weeksMap << "MON" << "TUE" << "WED" << "THU" << "FRI" << "SAT" << "SUN"; for (int i = 0; i <= 23; ++i) { model.hoursMap.append(QString("%1").arg(i, 2, 10, QChar('0'))); } return model; } void DateItemModel::loadFromXml(DateItemModel &vm, const QXmlStreamAttributes &attrs) { auto& m = vm; m.dataMap = attrs.value("dataMap").toString().split("
"); m.daysMap = attrs.value("daysMap").toString().split("
"); m.hoursMap = attrs.value("hoursMap").toString().split("
"); m.monthsMap = attrs.value("monthsMap").toString().split("
"); m.weeksMap = attrs.value("weeksMap").toString().split("
"); auto yearsMap = attrs.value("yearsMap").toString().split("
"); for(auto it = yearsMap.begin(); it != yearsMap.end(); ++it) { auto yearPair = it->split(""); if(yearPair.size() == 2) { m.yearsMap[yearPair[0].toInt()] = yearPair[1]; } } m.monthsOffset = attrs.value("monthsOffset").toInt(); m.daysOffset = attrs.value("daysOffset").toInt(); m.datetimePattern = attrs.value("datetimePattern").toString(); } void DateItemModel::saveToXml(const DateItemModel &vm, QXmlStreamAttributes &attrs) { auto& m = vm; auto dataMap = m.dataMap.join("
"); auto daysMap = m.daysMap.join("
"); auto hoursMap = m.hoursMap.join("
"); auto monthsMap = m.monthsMap.join("
"); auto weeksMap = m.weeksMap.join("
"); QString yearsMap; for(auto it = m.yearsMap.begin(); it != m.yearsMap.end(); ++it) { yearsMap.append(QString("%1%2
").arg(it.key()).arg(it.value())); } attrs.append("dataMap", dataMap); attrs.append("daysMap", daysMap); attrs.append("hoursMap", hoursMap); attrs.append("monthsMap", monthsMap); attrs.append("weeksMap", weeksMap); attrs.append("yearsMap", yearsMap); attrs.append("datetimePattern", m.datetimePattern); attrs.append("monthsOffset", QString::number(m.monthsOffset)); attrs.append("daysOffset", QString::number(m.daysOffset)); } void CounterViewModel::loadFromXml(CounterViewModel &vm, const QXmlStreamAttributes &attrs) { auto typeRef = attrs.value("counter_type"); auto digitalNumRef = attrs.value("digital_num"); bool ok = false; int counterType = typeRef.toInt(&ok); if(!ok || (counterType != COUNTER_TYPE_1 && COUNTER_TYPE_2 != counterType)) { qWarning() << "Invalied counter type: " << counterType; return; } ok = false; int digitalNum = digitalNumRef.toInt(&ok); if(!ok || digitalNum <= 0) { qWarning() << "Invalied counter digital number: " << digitalNum; return; } vm.counterType = static_cast(counterType); vm.digitalNum = digitalNum; qInfo() << "Loaded attrs from xml: " << " counter type: " << counterType << ", digitalNum: " << digitalNum; } void CounterViewModel::saveToXml(CounterViewModel &vm, QXmlStreamAttributes &attrs) { attrs.append("counter_type", QString::number(vm.counterType)); attrs.append("digital_num", QString::number(vm.digitalNum)); qInfo() << "Set attrs to xml: " << " counter type: " << vm.counterType << ", digitalNum: " << vm.digitalNum; }