Showing the changes to interface/src/ui/DomainConnectionModel.cpp (1 of 7 files). Show all
Unified · Split
| @@ -0,0 +1,101 @@ | |||
| 1 | // | ||
| 2 | // DomainConnectionModel.cpp | ||
| 3 | // | ||
| 4 | // Created by Vlad Stelmahovsky | ||
| 5 | // Copyright 2017 High Fidelity, Inc. | ||
| 6 | // | ||
| 7 | // Distributed under the Apache License, Version 2.0. | ||
| 8 | // See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html | ||
| 9 | // | ||
| 10 | |||
| 11 | #include "DomainConnectionModel.h" | ||
| 12 | #include <QLoggingCategory> | ||
| 13 | |||
| 14 | #include <NodeList.h> | ||
| 15 | #include <NumericalConstants.h> | ||
| 16 | |||
| 17 | Q_LOGGING_CATEGORY(dcmodel, "hifi.dcmodel") | ||
| 18 | |||
| 19 | DomainConnectionModel::DomainConnectionModel(QAbstractItemModel* parent) : | ||
| 20 | QAbstractItemModel(parent) | ||
| 21 | {} | ||
| 22 | |||
| 23 | DomainConnectionModel::~DomainConnectionModel() { | ||
| 24 | } | ||
| 25 | |||
| 26 | QVariant DomainConnectionModel::data(const QModelIndex& index, int role) const { | ||
| 27 | //sanity | ||
| 28 | const QMap<quint64, LimitedNodeList::ConnectionStep> × = | ||
| 29 | DependencyManager::get<NodeList>()->getLastConnectionTimes(); | ||
| 30 | |||
| 31 | if (!index.isValid() || index.row() >= times.size()) | ||
| 32 | return QVariant(); | ||
| 33 | |||
| 34 | // setup our data with the values from the NodeList | ||
| 35 | quint64 firstStepTime = times.firstKey() / USECS_PER_MSEC; | ||
| 36 | quint64 timestamp = times.keys().at(index.row()); | ||
| 37 | |||
| 38 | quint64 stepTime = timestamp / USECS_PER_MSEC; | ||
| 39 | quint64 delta = 0;//(stepTime - lastStepTime); | ||
| 40 | quint64 elapsed = 0;//stepTime - firstStepTime; | ||
| 41 | |||
| 42 | if (index.row() > 0) { | ||
| 43 | quint64 prevstepTime = times.keys().at(index.row() - 1) / USECS_PER_MSEC; | ||
| 44 | delta = (stepTime - prevstepTime); | ||
| 45 | elapsed = stepTime - firstStepTime; | ||
| 46 | } | ||
| 47 | |||
| 48 | if (role == Qt::DisplayRole || role == DisplayNameRole) { | ||
| 49 | const QMetaObject &nodeListMeta = NodeList::staticMetaObject; | ||
| 50 | QMetaEnum stepEnum = nodeListMeta.enumerator(nodeListMeta.indexOfEnumerator("ConnectionStep")); | ||
| 51 | int stepIndex = (int) times.value(timestamp); | ||
| 52 | return stepEnum.valueToKey(stepIndex); | ||
| 53 | } else if (role == DeltaRole) { | ||
| 54 | return delta; | ||
| 55 | } else if (role == TimestampRole) { | ||
| 56 | return stepTime; | ||
| 57 | } else if (role == TimeElapsedRole) { | ||
| 58 | return elapsed; | ||
| 59 | } | ||
| 60 | return QVariant(); | ||
| 61 | } | ||
| 62 | |||
| 63 | int DomainConnectionModel::rowCount(const QModelIndex& parent) const { | ||
| 64 | Q_UNUSED(parent) | ||
| 65 | const QMap<quint64, LimitedNodeList::ConnectionStep> × = | ||
| 66 | DependencyManager::get<NodeList>()->getLastConnectionTimes(); | ||
| 67 | return times.size(); | ||
| 68 | } | ||
| 69 | |||
| 70 | QHash<int, QByteArray> DomainConnectionModel::roleNames() const { | ||
| 71 | QHash<int, QByteArray> roles; | ||
| 72 | roles.insert(DisplayNameRole, "name"); | ||
| 73 | roles.insert(TimestampRole, "timestamp"); | ||
| 74 | roles.insert(DeltaRole, "delta"); | ||
| 75 | roles.insert(TimeElapsedRole, "timeelapsed"); | ||
| 76 | return roles; | ||
| 77 | } | ||
| 78 | |||
| 79 | QModelIndex DomainConnectionModel::index(int row, int column, const QModelIndex &parent) const | ||
| 80 | { | ||
| 81 | Q_UNUSED(parent) | ||
| 82 | return createIndex(row, column); | ||
| 83 | } | ||
| 84 | |||
| 85 | QModelIndex DomainConnectionModel::parent(const QModelIndex &child) const | ||
| 86 | { | ||
| 87 | Q_UNUSED(child) | ||
| 88 | return QModelIndex(); | ||
| 89 | } | ||
| 90 | |||
| 91 | int DomainConnectionModel::columnCount(const QModelIndex &parent) const | ||
| 92 | { | ||
| 93 | Q_UNUSED(parent) | ||
| 94 | return 1; | ||
| 95 | } | ||
| 96 | |||
| 97 | void DomainConnectionModel::refresh() { | ||
| 98 | //inform view that we want refresh data | ||
| 99 | beginResetModel(); | ||
| 100 | endResetModel(); | ||
| 101 | } | ||