32 #include "../ConditionTreeFactory.h"
33 #include "../ConditionViewerWidgetController.h"
38 QWidget(0), timerId(0)
46 ui.graphicsView->setScene(scene);
52 ui.activeConditionsTableView->setModel(activeConditionsModel);
53 ui.pastConditionsTableView->setModel(pastConditionsModel);
56 QStringList checksHeader;
57 checksHeader <<
"datafield"
62 ui.checksTableWidget->setColumnCount(5);
63 ui.checksTableWidget->setHorizontalHeaderLabels(checksHeader);
64 ui.checksTableWidget->update();
67 QItemSelectionModel* activeSelectionModel = ui.activeConditionsTableView->selectionModel();
68 QItemSelectionModel* pastSelectionModel = ui.pastConditionsTableView->selectionModel();
71 connect(activeSelectionModel,
72 SIGNAL(selectionChanged(
const QItemSelection&,
const QItemSelection&)),
75 connect(pastSelectionModel,
76 SIGNAL(selectionChanged(
const QItemSelection&,
const QItemSelection&)),
80 scene, SIGNAL(graphicsSceneClicked()), ui.checksTableWidget, SLOT(clearSelection()));
97 ui.checksTableWidget->clearContents();
98 ui.checksTableWidget->setRowCount(0);
101 activeConditionsModel->
reset();
102 pastConditionsModel->
reset();
105 ui.activeConditionsTableView->resizeColumnsToContents();
106 ui.pastConditionsTableView->resizeColumnsToContents();
111 timerId = startTimer(500);
115 this, &ConditionViewerWidget::updateLiterals, 200,
false,
"LiteralsUpdater");
137 const QItemSelection& deselected)
139 std::unique_lock lock(dataMutex);
141 if (selected.indexes().size() == 0)
146 QModelIndexList
list = selected.indexes();
147 QStandardItem* i = activeConditionsModel->itemFromIndex(
list.at(0));
160 const QItemSelection& deselected)
162 std::unique_lock lock(dataMutex);
164 if (selected.indexes().size() == 0)
169 QModelIndexList
list = selected.indexes();
170 QStandardItem* i = pastConditionsModel->itemFromIndex(
list.at(0));
181 ConditionViewerWidget::conditionFromItem(QStandardItem* selectedItem,
182 const ConditionRegistry& registry)
184 ConditionRegistry::const_iterator iter =
187 if (iter != registry.end())
189 ConditionRootPtr conditionRoot = ConditionRootPtr::dynamicCast(iter->second);
190 return conditionRoot;
197 ConditionViewerWidget::updateCondition(
int conditionId,
ConditionRootPtr& condition)
199 std::unique_lock lock(dataMutex);
201 ui.checksTableWidget->clearContents();
202 ui.checksTableWidget->setRowCount(0);
206 ui.checksTableWidget,
216 ConditionViewerWidget::updateLiterals()
222 std::vector<TreeNodePtr> tempChildNodes;
223 std::vector<TreeNodePtr> qtChildren;
224 int conditionId = -1;
226 std::unique_lock lock(dataMutex);
228 qtChildren.push_back(root);
229 tempChildNodes = root->getChildren();
230 conditionId = root->conditionId;
231 qtChildren.insert(qtChildren.end(), tempChildNodes.begin(), tempChildNodes.end());
232 auto result =
controller->handler->getCondition(conditionId);
238 TermImplSequence children;
239 children.push_back(newRoot);
240 auto temp2 = newRoot->getChilds();
241 children.insert(children.end(), temp2.begin(), temp2.end());
243 while (qtChildren.size() > 0)
246 TermImplPtr term = TermImplPtr::dynamicCast(*children.rbegin());
247 qtChildren.pop_back();
249 auto newQtChildren = node->getChildren();
250 qtChildren.insert(qtChildren.end(), newQtChildren.begin(), newQtChildren.end());
251 auto newChildren = term->getChilds();
252 children.insert(children.end(), newChildren.begin(), newChildren.end());
254 if (children.size() != qtChildren.size())
260 TermNodePtr termNode = std::dynamic_pointer_cast<TermNode>(node);
262 if (termNode && term)
264 emit termNode->newLiteralValue(term->getValue());
265 termNode->timerEventRun();
274 if (event->timerId() == timerId)
276 std::unique_lock lock(dataMutex);
278 activeConditions =
controller->getActiveConditions();
279 pastConditions =
controller->getPastConditions();
282 activeConditionsModel->
update(activeConditions);
283 pastConditionsModel->
update(pastConditions);
286 ui.activeConditionsTableView->resizeColumnsToContents();
287 ui.pastConditionsTableView->resizeColumnsToContents();