From aea64c926112dd5a9c7287613556eb2e9ac4a8e9 Mon Sep 17 00:00:00 2001 From: jussi Date: Wed, 23 Oct 2019 14:55:00 +0300 Subject: [PATCH] update assignable manager --- .../interface/qt/data/AssignableManager.cpp | 17 +++++-- .../interface/qt/data/AssignableManager.h | 4 +- .../interface/qt/widgets/AssignableWidget.cpp | 49 ++++++++++--------- .../interface/qt/widgets/AssignableWidget.h | 4 ++ 4 files changed, 46 insertions(+), 28 deletions(-) diff --git a/src/modules/interface/qt/data/AssignableManager.cpp b/src/modules/interface/qt/data/AssignableManager.cpp index b797d7f..a9066f4 100644 --- a/src/modules/interface/qt/data/AssignableManager.cpp +++ b/src/modules/interface/qt/data/AssignableManager.cpp @@ -1,5 +1,7 @@ #include "AssignableManager.h" +#include + AssignableManager::AssignableManager() { // Open all assignable modules uint16_t mod_count; @@ -20,17 +22,26 @@ AssignableManager::AssignableManager() { for (tc_module_t *module : m_assignableModules) { tc_assignable_node_t *root = static_cast(module->category_data_callback()); if (root == NULL) { - m_assignableModules.remove(m_assignableModules.indexOf(module)); + //m_assignableModules.remove(m_assignableModules.indexOf(module)); } m_assignableRootNodes.append(root); } - - delete assignableModules; + printf("found %d modules\n", mod_count); + + qDebug() << m_assignableRootNodes.length(); + + //delete assignableModules; } AssignableManager::~AssignableManager() { + qDebug() << "descructor"; // Close all modules for (tc_module_t *module : m_assignableModules) { + qDebug() << "closing module at" << module; tc_module_close(module); } } + +QVector AssignableManager::rootNodes() { + return m_assignableRootNodes; +} diff --git a/src/modules/interface/qt/data/AssignableManager.h b/src/modules/interface/qt/data/AssignableManager.h index ac91007..d128c80 100644 --- a/src/modules/interface/qt/data/AssignableManager.h +++ b/src/modules/interface/qt/data/AssignableManager.h @@ -1,3 +1,5 @@ +#pragma once + #include #include @@ -10,7 +12,7 @@ public: ~AssignableManager(); // Return a list of root assignable nodes - QList rootNodes(); + QVector rootNodes(); private: QVector m_assignableModules; QVector m_assignableRootNodes; diff --git a/src/modules/interface/qt/widgets/AssignableWidget.cpp b/src/modules/interface/qt/widgets/AssignableWidget.cpp index 762a3fb..cbc00f3 100644 --- a/src/modules/interface/qt/widgets/AssignableWidget.cpp +++ b/src/modules/interface/qt/widgets/AssignableWidget.cpp @@ -1,5 +1,6 @@ #include "AssignableWidget.h" #include +#include #include #include @@ -17,13 +18,15 @@ AssignableWidget::AssignableWidget(QWidget *parent) : QWidget(parent) { m_splitter->addWidget(m_assignableTreeView); setLayout(m_mainLayout); + + m_assignableManager = new AssignableManager; } AssignableWidget::~AssignableWidget() { } void AssignableWidget::genAssignableTree(QTreeView *treeView) { - tc_module_t *nv_mod = tc_module_find(TC_CATEGORY_ASSIGNABLE, "nvidia"); + /*tc_module_t *nv_mod = tc_module_find(TC_CATEGORY_ASSIGNABLE, "nvidia"); if (nv_mod != NULL) { if (nv_mod->init_callback() != TC_SUCCESS) { @@ -35,11 +38,11 @@ void AssignableWidget::genAssignableTree(QTreeView *treeView) { return; } - tc_assignable_node_t *root= (tc_assignable_node_t*) nv_mod->category_data_callback(); + tc_assignable_node_t *root = (tc_assignable_node_t*) nv_mod->category_data_callback(); if (root == NULL) { return; - } + }*/ QStandardItemModel *assignableModel = new QStandardItemModel(0, 2); // Add header items @@ -66,52 +69,50 @@ void AssignableWidget::genAssignableTree(QTreeView *treeView) { QStandardItem *nameItem = new QStandardItem; nameItem->setText(node->name); + nameItem->setEditable(false); rowItems.append(nameItem); // Don't add editor item for TC_ASSIGNABLE_NONE nodes - - - QStandardItem *editorItem = new QStandardItem; - QVariant v; if (node->value_category != TC_ASSIGNABLE_NONE) { - editorItem->setText(node->name); + QStandardItem *editorItem = new QStandardItem; + QVariant v; AssignableData data(node); v.setValue(data); - editorItem->setData(v); + editorItem->setData(v, Qt::EditRole); + //editorItem->setText(node->name); rowItems.append(editorItem); } - else { - //delete editorItem; - } item->appendRow(rowItems); - assignableModel->setData(assignableModel->indexFromItem(editorItem), v); - - if (node->children_count == 0) { - return; - } for (uint32_t i = 0; i < node->children_count; i++) { traverse(node->children_nodes[i], nameItem); } }; - //connect(m_assignableTreeView, &QTreeView::activated, [=](QModelIndex index) {m_assignableEditor->setData(assignableModel->itemFromIndex(index)->data());}); - QStandardItem *parentItem = assignableModel->invisibleRootItem(); + + // Get root nodes from manager + //QVector rootNodes = m_assignableManager->rootNodes(); + + //delete m_assignableManager; + + /*for (tc_assignable_node_t *root : rootNodes) { + traverse(root, parentItem); + }*/ + + // We don't want to display root nodes from the modules - for (uint32_t i = 0; i < root->children_count; i++) { + /*for (uint32_t i = 0; i < root->children_count; i++) { traverse(root->children_nodes[i], parentItem); - } + }*/ m_assignableTreeView->setModel(assignableModel); AssignableEditorDelegate *delegate = new AssignableEditorDelegate; - m_assignableTreeView->setItemDelegate(delegate); - - //m_assignableTreeView->setHeaderHidden(true); + m_assignableTreeView->setItemDelegateForColumn(1, delegate); m_assignableTreeView->setEditTriggers(QAbstractItemView::AllEditTriggers); } diff --git a/src/modules/interface/qt/widgets/AssignableWidget.h b/src/modules/interface/qt/widgets/AssignableWidget.h index 2344acb..3a108f7 100644 --- a/src/modules/interface/qt/widgets/AssignableWidget.h +++ b/src/modules/interface/qt/widgets/AssignableWidget.h @@ -1,6 +1,7 @@ #pragma once #include +#include #include #include @@ -23,5 +24,8 @@ private: QTreeWidget *m_assignableTreeWidget; QTreeView *m_assignableTreeView; + // Assignable manager instance - maybe move this somewhere else? + AssignableManager *m_assignableManager; + void genAssignableTree(QTreeView *treeView); };