update assignable manager

This commit is contained in:
jussi 2019-10-23 14:55:00 +03:00
parent 07a05e004d
commit aea64c9261
4 changed files with 46 additions and 28 deletions

View File

@ -1,5 +1,7 @@
#include "AssignableManager.h"
#include <QDebug>
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<tc_assignable_node_t*>(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);
}
printf("found %d modules\n", mod_count);
delete assignableModules;
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 <tc_assignable_node_t*> AssignableManager::rootNodes() {
return m_assignableRootNodes;
}

View File

@ -1,3 +1,5 @@
#pragma once
#include <tc_assignable.h>
#include <tc_module.h>
@ -10,7 +12,7 @@ public:
~AssignableManager();
// Return a list of root assignable nodes
QList <tc_assignable_node_t*> rootNodes();
QVector <tc_assignable_node_t*> rootNodes();
private:
QVector <tc_module_t*> m_assignableModules;
QVector <tc_assignable_node_t*> m_assignableRootNodes;

View File

@ -1,5 +1,6 @@
#include "AssignableWidget.h"
#include <AssignableEditorDelegate.h>
#include <AssignableManager.h>
#include <tc_module.h>
#include <tc_assignable.h>
@ -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 <tc_assignable_node_t*> 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);
}

View File

@ -1,6 +1,7 @@
#pragma once
#include <AssignableData.h>
#include <AssignableManager.h>
#include <QWidget>
#include <QSplitter>
@ -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);
};