ENLIGHTEN
Cross-platform desktop GUI for Wasatch Photonics spectrometers
Loading...
Searching...
No Matches
modelupdatethreadworker.h
Go to the documentation of this file.
1
27
28#ifndef MODELUPDATETHREADWORKER_H
29#define MODELUPDATETHREADWORKER_H
30
31#include "nodelistobject.h"
32
33#include <peak/node_map/peak_node_map.hpp>
34
35#include <QMutex>
36#include <QObject>
37#include <QStringList>
38
39#include <unordered_map>
40#include <vector>
41#include <atomic>
42
43class ModelUpdateThreadWorker : public QObject
44{
45 Q_OBJECT
46public:
47 enum class State
48 {
53 };
54
55 explicit ModelUpdateThreadWorker(QObject* parent = nullptr);
56 ~ModelUpdateThreadWorker() override;
57
59
60 void setNodeMap(std::shared_ptr<peak::core::NodeMap> nodeMap);
61 void setNodes(const std::vector<std::shared_ptr<peak::core::nodes::Node>>& nodes);
62 void update();
63 void pause();
64 void resume();
65
66public slots:
67 void cancel();
68 void nodeChanged(const std::shared_ptr<peak::core::nodes::Node>& changedNode);
69 void unregisterAll();
70
71signals:
72 void updateList(int minIndex, int maxIndex, QVector<int> changedRoles);
74 void started();
75 void finished();
76
77private:
78 std::shared_ptr<peak::core::NodeMap> m_nodeMap;
79 QStringList m_nodeNames;
80 std::vector<std::unique_ptr<NodeListObject>> m_objects;
81 std::unordered_map<std::string, peak::core::nodes::Node::ChangedCallbackHandle>
83 std::vector<std::string> m_changedNodes;
84
85 std::atomic<State> m_state{State::IDLE};
86
87 mutable QMutex mutex;
88 void clear();
89};
90
91#endif // MODELUPDATETHREADWORKER_H
std::vector< std::string > m_changedNodes
Definition modelupdatethreadworker.h:83
std::vector< std::unique_ptr< NodeListObject > > m_objects
Definition modelupdatethreadworker.h:80
QMutex mutex
Definition modelupdatethreadworker.h:87
void cancel()
Definition modelupdatethreadworker.cpp:204
void resume()
Definition modelupdatethreadworker.cpp:198
void clear()
Definition modelupdatethreadworker.cpp:43
void nodeChanged(const std::shared_ptr< peak::core::nodes::Node > &changedNode)
Definition modelupdatethreadworker.cpp:217
void unregisterAll()
Definition modelupdatethreadworker.cpp:268
void update()
Definition modelupdatethreadworker.cpp:98
State currentState()
Definition modelupdatethreadworker.cpp:188
State
Definition modelupdatethreadworker.h:48
@ BUSY
Definition modelupdatethreadworker.h:50
@ PAUSED
Definition modelupdatethreadworker.h:51
@ IDLE
Definition modelupdatethreadworker.h:49
@ CANCELED
Definition modelupdatethreadworker.h:52
std::shared_ptr< peak::core::NodeMap > m_nodeMap
Definition modelupdatethreadworker.h:78
void setNodes(const std::vector< std::shared_ptr< peak::core::nodes::Node > > &nodes)
Definition modelupdatethreadworker.cpp:73
std::atomic< State > m_state
Definition modelupdatethreadworker.h:85
ModelUpdateThreadWorker(QObject *parent=nullptr)
Definition modelupdatethreadworker.cpp:37
QStringList m_nodeNames
Definition modelupdatethreadworker.h:79
std::unordered_map< std::string, peak::core::nodes::Node::ChangedCallbackHandle > m_nodeChangedCallbackHandles
Definition modelupdatethreadworker.h:82
void updateList(int minIndex, int maxIndex, QVector< int > changedRoles)
void pause()
Definition modelupdatethreadworker.cpp:193
void setNodeMap(std::shared_ptr< peak::core::NodeMap > nodeMap)
Definition modelupdatethreadworker.cpp:68
~ModelUpdateThreadWorker() override
Definition modelupdatethreadworker.cpp:62
The NodeListObject is a prototype for camera property nodes of the types 'Enumeration',...