diff options
author | Dirk Hohndel <dirk@hohndel.org> | 2013-06-18 00:33:03 -0700 |
---|---|---|
committer | Dirk Hohndel <dirk@hohndel.org> | 2013-06-18 00:33:03 -0700 |
commit | 0773172f66ef3cd73a88e3297c8b5ae28cfe2a8f (patch) | |
tree | f0afadcacdb22dfe4781cd9891a95c302edcfcb6 /qthelper.cpp | |
parent | 87e380c7a28b467705b470323275db3812e0fa90 (diff) | |
parent | 29b242c70349cbd67aacc3e4f1206630d22c54eb (diff) | |
download | subsurface-0773172f66ef3cd73a88e3297c8b5ae28cfe2a8f.tar.gz |
Merge branch 'qtHelper'
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
Diffstat (limited to 'qthelper.cpp')
-rw-r--r-- | qthelper.cpp | 82 |
1 files changed, 82 insertions, 0 deletions
diff --git a/qthelper.cpp b/qthelper.cpp new file mode 100644 index 000000000..9c74a74cf --- /dev/null +++ b/qthelper.cpp @@ -0,0 +1,82 @@ +#include "qthelper.h" + +DiveComputerList::DiveComputerList() +{ + +} + +DiveComputerList::~DiveComputerList() +{ + dcMap.~QMap(); +} + +bool DiveComputerNode::operator == (const DiveComputerNode &a) const { + return this->model == a.model && + this->deviceId == a.deviceId && + this->firmware == a.firmware && + this->serialNumber == a.serialNumber && + this->nickName == a.nickName; +} + +bool DiveComputerNode::operator !=(const DiveComputerNode &a) const { + return !(*this == a); +} + +bool DiveComputerNode::changesValues(const DiveComputerNode &b) const +{ + if (this->model != b.model || this->deviceId != b.deviceId) { + qDebug("DiveComputerNodes were not for the same DC"); + return false; + } + return (b.firmware != "" && this->firmware != b.firmware) || + (b.serialNumber != "" && this->serialNumber != b.serialNumber) || + (b.nickName != "" && this->nickName != b.nickName); +} + +const DiveComputerNode *DiveComputerList::getExact(QString m, uint32_t d) +{ + if (dcMap.contains(m)) { + QList<DiveComputerNode> values = dcMap.values(m); + for (int i = 0; i < values.size(); i++) + if (values.at(i).deviceId == d) + return &values.at(i); + } + return NULL; +} + +const DiveComputerNode *DiveComputerList::get(QString m) +{ + if (dcMap.contains(m)) { + QList<DiveComputerNode> values = dcMap.values(m); + return &values.at(0); + } + return NULL; +} + +void DiveComputerList::addDC(QString m, uint32_t d, QString n, QString s, QString f) +{ + if (m == "" || d == 0) + return; + const DiveComputerNode *existNode = this->getExact(m, d); + DiveComputerNode newNode(m, d, s, f, n); + if (existNode) { + if (newNode.changesValues(*existNode)) { + if (n != "" && existNode->nickName != n) + qDebug("new nickname %s for DC model %s deviceId 0x%x", n.toUtf8().data(), m.toUtf8().data(), d); + if (f != "" && existNode->firmware != f) + qDebug("new firmware version %s for DC model %s deviceId 0x%x", f.toUtf8().data(), m.toUtf8().data(), d); + if (s != "" && existNode->serialNumber != s) + qDebug("new serial number %s for DC model %s deviceId 0x%x", s.toUtf8().data(), m.toUtf8().data(), d); + } else { + return; + } + dcMap.remove(m, *existNode); + } + dcMap.insert(m, newNode); +} + +void DiveComputerList::rmDC(QString m, uint32_t d) +{ + const DiveComputerNode *existNode = this->getExact(m, d); + dcMap.remove(m, *existNode); +} |