History

Implemented Domain Connection statistics for Tablet UI

Vladyslav Stelmakhovskyi committed 9 years ago

Commit 856e1501 parent cf0e90e7 files · +325 −1Browse files

Showing the changes to interface/src/ui/DomainConnectionModel.cpp (1 of 7 files). Show all

Unified · Split

interface/src/ui/DomainConnectionModel.cpp+101−0
@@ -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> &times =
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> &times =
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+}