diff options
Diffstat (limited to 'api')
-rw-r--r-- | api/logic/InstanceList.cpp | 18 | ||||
-rw-r--r-- | api/logic/InstanceList.h | 4 |
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; |