diff options
Diffstat (limited to 'depends/groupview/main.h')
-rw-r--r-- | depends/groupview/main.h | 54 |
1 files changed, 54 insertions, 0 deletions
diff --git a/depends/groupview/main.h b/depends/groupview/main.h new file mode 100644 index 00000000..2a358329 --- /dev/null +++ b/depends/groupview/main.h @@ -0,0 +1,54 @@ +#pragma once + +#include <QObject> +#include <QTimer> +#include <QList> +#include <QStandardItem> +#include <QDebug> + +#include "GroupView.h" + +class Progresser : public QObject +{ + Q_OBJECT +public: + explicit Progresser(QObject *parent = 0) : QObject(parent) + { + QTimer *timer = new QTimer(this); + connect(timer, SIGNAL(timeout()), this, SLOT(timeout())); + timer->start(50); + } + + QStandardItem *addTrackedIndex(QStandardItem *item) + { + item->setData(1000, GroupViewRoles::ProgressMaximumRole); + m_items.append(item); + return item; + } + +public +slots: + void timeout() + { + QList<QStandardItem *> toRemove; + for (auto item : m_items) + { + int maximum = item->data(GroupViewRoles::ProgressMaximumRole).toInt(); + int value = item->data(GroupViewRoles::ProgressValueRole).toInt(); + int newvalue = std::min(value + 3, maximum); + item->setData(newvalue, GroupViewRoles::ProgressValueRole); + + if(newvalue >= maximum) + { + toRemove.append(item); + } + } + for(auto remove : toRemove) + { + m_items.removeAll(remove); + } + } + +private: + QList<QStandardItem *> m_items; +}; |