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 "AssignableManager.h"
#include <QDebug>
AssignableManager::AssignableManager() { AssignableManager::AssignableManager() {
// Open all assignable modules // Open all assignable modules
uint16_t mod_count; uint16_t mod_count;
@ -20,17 +22,26 @@ AssignableManager::AssignableManager() {
for (tc_module_t *module : m_assignableModules) { for (tc_module_t *module : m_assignableModules) {
tc_assignable_node_t *root = static_cast<tc_assignable_node_t*>(module->category_data_callback()); tc_assignable_node_t *root = static_cast<tc_assignable_node_t*>(module->category_data_callback());
if (root == NULL) { if (root == NULL) {
m_assignableModules.remove(m_assignableModules.indexOf(module)); //m_assignableModules.remove(m_assignableModules.indexOf(module));
} }
m_assignableRootNodes.append(root); m_assignableRootNodes.append(root);
} }
printf("found %d modules\n", mod_count);
delete assignableModules; qDebug() << m_assignableRootNodes.length();
//delete assignableModules;
} }
AssignableManager::~AssignableManager() { AssignableManager::~AssignableManager() {
qDebug() << "descructor";
// Close all modules // Close all modules
for (tc_module_t *module : m_assignableModules) { for (tc_module_t *module : m_assignableModules) {
qDebug() << "closing module at" << module;
tc_module_close(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_assignable.h>
#include <tc_module.h> #include <tc_module.h>
@ -10,7 +12,7 @@ public:
~AssignableManager(); ~AssignableManager();
// Return a list of root assignable nodes // Return a list of root assignable nodes
QList <tc_assignable_node_t*> rootNodes(); QVector <tc_assignable_node_t*> rootNodes();
private: private:
QVector <tc_module_t*> m_assignableModules; QVector <tc_module_t*> m_assignableModules;
QVector <tc_assignable_node_t*> m_assignableRootNodes; QVector <tc_assignable_node_t*> m_assignableRootNodes;

View File

@ -1,5 +1,6 @@
#include "AssignableWidget.h" #include "AssignableWidget.h"
#include <AssignableEditorDelegate.h> #include <AssignableEditorDelegate.h>
#include <AssignableManager.h>
#include <tc_module.h> #include <tc_module.h>
#include <tc_assignable.h> #include <tc_assignable.h>
@ -17,13 +18,15 @@ AssignableWidget::AssignableWidget(QWidget *parent) : QWidget(parent) {
m_splitter->addWidget(m_assignableTreeView); m_splitter->addWidget(m_assignableTreeView);
setLayout(m_mainLayout); setLayout(m_mainLayout);
m_assignableManager = new AssignableManager;
} }
AssignableWidget::~AssignableWidget() { AssignableWidget::~AssignableWidget() {
} }
void AssignableWidget::genAssignableTree(QTreeView *treeView) { 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 != NULL) {
if (nv_mod->init_callback() != TC_SUCCESS) { if (nv_mod->init_callback() != TC_SUCCESS) {
@ -35,11 +38,11 @@ void AssignableWidget::genAssignableTree(QTreeView *treeView) {
return; 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) { if (root == NULL) {
return; return;
} }*/
QStandardItemModel *assignableModel = new QStandardItemModel(0, 2); QStandardItemModel *assignableModel = new QStandardItemModel(0, 2);
// Add header items // Add header items
@ -66,52 +69,50 @@ void AssignableWidget::genAssignableTree(QTreeView *treeView) {
QStandardItem *nameItem = new QStandardItem; QStandardItem *nameItem = new QStandardItem;
nameItem->setText(node->name); nameItem->setText(node->name);
nameItem->setEditable(false);
rowItems.append(nameItem); rowItems.append(nameItem);
// Don't add editor item for TC_ASSIGNABLE_NONE nodes // Don't add editor item for TC_ASSIGNABLE_NONE nodes
QStandardItem *editorItem = new QStandardItem;
QVariant v;
if (node->value_category != TC_ASSIGNABLE_NONE) { if (node->value_category != TC_ASSIGNABLE_NONE) {
editorItem->setText(node->name); QStandardItem *editorItem = new QStandardItem;
QVariant v;
AssignableData data(node); AssignableData data(node);
v.setValue(data); v.setValue(data);
editorItem->setData(v); editorItem->setData(v, Qt::EditRole);
//editorItem->setText(node->name);
rowItems.append(editorItem); rowItems.append(editorItem);
} }
else {
//delete editorItem;
}
item->appendRow(rowItems); 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++) { for (uint32_t i = 0; i < node->children_count; i++) {
traverse(node->children_nodes[i], nameItem); traverse(node->children_nodes[i], nameItem);
} }
}; };
//connect(m_assignableTreeView, &QTreeView::activated, [=](QModelIndex index) {m_assignableEditor->setData(assignableModel->itemFromIndex(index)->data());});
QStandardItem *parentItem = assignableModel->invisibleRootItem(); 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 // 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); traverse(root->children_nodes[i], parentItem);
} }*/
m_assignableTreeView->setModel(assignableModel); m_assignableTreeView->setModel(assignableModel);
AssignableEditorDelegate *delegate = new AssignableEditorDelegate; AssignableEditorDelegate *delegate = new AssignableEditorDelegate;
m_assignableTreeView->setItemDelegate(delegate); m_assignableTreeView->setItemDelegateForColumn(1, delegate);
//m_assignableTreeView->setHeaderHidden(true);
m_assignableTreeView->setEditTriggers(QAbstractItemView::AllEditTriggers); m_assignableTreeView->setEditTriggers(QAbstractItemView::AllEditTriggers);
} }

View File

@ -1,6 +1,7 @@
#pragma once #pragma once
#include <AssignableData.h> #include <AssignableData.h>
#include <AssignableManager.h>
#include <QWidget> #include <QWidget>
#include <QSplitter> #include <QSplitter>
@ -23,5 +24,8 @@ private:
QTreeWidget *m_assignableTreeWidget; QTreeWidget *m_assignableTreeWidget;
QTreeView *m_assignableTreeView; QTreeView *m_assignableTreeView;
// Assignable manager instance - maybe move this somewhere else?
AssignableManager *m_assignableManager;
void genAssignableTree(QTreeView *treeView); void genAssignableTree(QTreeView *treeView);
}; };