aboutsummaryrefslogtreecommitdiff
path: root/api
diff options
context:
space:
mode:
Diffstat (limited to 'api')
-rw-r--r--api/logic/InstanceList.cpp18
-rw-r--r--api/logic/InstanceList.h4
2 files changed, 21 insertions, 1 deletions
diff --git a/api/logic/InstanceList.cpp b/api/logic/InstanceList.cpp
index 02fae6ac..cb38853b 100644
--- a/api/logic/InstanceList.cpp
+++ b/api/logic/InstanceList.cpp
@@ -387,9 +387,19 @@ InstanceList::InstListError InstanceList::loadList()
add(newList);
}
m_dirty = false;
+ updateTotalPlayTime();
return NoError;
}
+void InstanceList::updateTotalPlayTime()
+{
+ totalPlayTime = 0;
+ for(auto const& itr : m_instances)
+ {
+ totalPlayTime += itr.get()->totalTimePlayed();
+ }
+}
+
void InstanceList::saveNow()
{
for(auto & item: m_instances)
@@ -475,6 +485,7 @@ void InstanceList::propertiesChanged(BaseInstance *inst)
if (i != -1)
{
emit dataChanged(index(i), index(i));
+ updateTotalPlayTime();
}
}
@@ -848,4 +859,9 @@ bool InstanceList::destroyStagingPath(const QString& keyPath)
return FS::deletePath(keyPath);
}
-#include "InstanceList.moc" \ No newline at end of file
+int InstanceList::getTotalPlayTime() {
+ updateTotalPlayTime();
+ return totalPlayTime;
+}
+
+#include "InstanceList.moc"
diff --git a/api/logic/InstanceList.h b/api/logic/InstanceList.h
index 8215cb66..56ee3be4 100644
--- a/api/logic/InstanceList.h
+++ b/api/logic/InstanceList.h
@@ -128,6 +128,8 @@ public:
*/
bool destroyStagingPath(const QString & keyPath);
+ int getTotalPlayTime();
+
signals:
void dataIsInvalid();
void instancesChanged();
@@ -145,6 +147,7 @@ private slots:
private:
int getInstIndex(BaseInstance *inst) const;
+ void updateTotalPlayTime();
void suspendWatch();
void resumeWatch();
void add(const QList<InstancePtr> &list);
@@ -155,6 +158,7 @@ private:
private:
int m_watchLevel = 0;
+ int totalPlayTime = 0;
bool m_dirty = false;
QList<InstancePtr> m_instances;
QSet<QString> m_groupNameCache;