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
17Q_LOGGING_CATEGORY(dcmodel, "hifi.dcmodel")
18
19DomainConnectionModel::DomainConnectionModel(QAbstractItemModel* parent) :
20 QAbstractItemModel(parent)
21{}
22
23DomainConnectionModel::~DomainConnectionModel() {
24}
25
26QVariant 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
63int 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
70QHash<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
79QModelIndex DomainConnectionModel::index(int row, int column, const QModelIndex &parent) const
80{
81 Q_UNUSED(parent)
82 return createIndex(row, column);
83}
84
85QModelIndex DomainConnectionModel::parent(const QModelIndex &child) const
86{
87 Q_UNUSED(child)
88 return QModelIndex();
89}
90
91int DomainConnectionModel::columnCount(const QModelIndex &parent) const
92{
93 Q_UNUSED(parent)
94 return 1;
95}
96
97void DomainConnectionModel::refresh() {
98 //inform view that we want refresh data
99 beginResetModel();
100 endResetModel();
101}