qt: update ReadableWidget

This commit is contained in:
Jussi Kuokkanen 2019-11-09 15:34:25 +02:00
parent 6c969835c3
commit d29249e0cf
5 changed files with 44 additions and 7 deletions

View File

@ -8,6 +8,7 @@ moc_files = qt5.preprocess(moc_headers : [ 'MainWindow.h',
'widgets/EnumEditor.h',
'widgets/ReadableWidget.h',
'widgets/ReadableBrowser.h',
'widgets/ReadableDisplay.h',
'data/AssignableManager.h',
'data/AssignableEditorDelegate.h'],
dependencies : qt5_dep)
@ -19,6 +20,7 @@ sources = ['main.cpp',
'widgets/EnumEditor.cpp',
'widgets/ReadableWidget.cpp',
'widgets/ReadableBrowser.cpp',
'widgets/ReadableDisplay.cpp',
'data/AssignableData.cpp',
'data/AssignableEditorDelegate.cpp',
'data/AssignableManager.cpp',

View File

@ -1,5 +1,6 @@
#include "ReadableBrowser.h"
#include <QMouseEvent>
#include <QDebug>
ReadableBrowser::ReadableBrowser(ReadableManager *readableManager, QWidget *parent) : QWidget(parent) {
@ -30,32 +31,54 @@ void ReadableBrowser::genBrowserTree(QTreeView *treeView, QStandardItemModel *it
if (node->name) {
qDebug() << node->name;
}
addBrowserItem(node, item);
QStandardItem *newItem = addBrowserItem(node, item);
if (!node->constant && node->value_callback) {
tc_readable_result_t res = node->value_callback(node);
qDebug() << res.valid << res.data.uint_value;
}
for (uint16_t i = 0; i < node->children_count; i++) {
traverse(node->children_nodes[i], item);
traverse(node->children_nodes[i], newItem);
}
};
//tc_readable_node_t *root = m_readableManager->root();
QVector <tc_readable_node_t*> rootNodes = m_readableManager->rootNodes();
for (tc_readable_node_t *node : m_readableManager->rootNodes()) {
traverse(node, parentItem);
// Start traversal from the first subitems of the root item
for (uint16_t i = 0; i < node->children_count; i++) {
traverse(node->children_nodes[i], parentItem);
}
}
treeView->setModel(itemModel);
treeView->setDragEnabled(true);
}
void ReadableBrowser::addBrowserItem(tc_readable_node_t* node, QStandardItem *parent) {
QStandardItem *ReadableBrowser::addBrowserItem(tc_readable_node_t* node, QStandardItem *parent) {
// Don't add item for constants
if (node->constant) {
return;
return nullptr;
}
if (!node->name) {
return;
return nullptr;
}
QStandardItem *item = new QStandardItem;
item->setText(node->name);
item->setDragEnabled(true);
parent->appendRow(item);
return item;
}
void ReadableBrowser::mousePressEvent(QMouseEvent *event) {
/*if (event->button() == Qt::LeftButton) {
QDrag *drag = new QDrag(this);
Qt::DropAction dropAction = drag->exec(Qt::MoveAction);
qDebug() << drag->mimeData();
}*/
}

View File

@ -3,14 +3,19 @@
#include <ReadableManager.h>
#include <QWidget>
#include <QDrag>
#include <QDropEvent>
#include <QVBoxLayout>
#include <QTreeView>
#include <QStandardItemModel>
class ReadableBrowser : public QWidget {
Q_OBJECT
public:
ReadableBrowser(ReadableManager *readableManager, QWidget *parent = nullptr);
~ReadableBrowser();
signals:
void itemDragStarted(QString &text);
private:
ReadableManager *m_readableManager; // ReadableManager instance that the browser is generated from
@ -19,5 +24,7 @@ private:
QStandardItemModel *m_browserModel;
void genBrowserTree(QTreeView *treeView, QStandardItemModel *itemModel);
void addBrowserItem(tc_readable_node_t* node, QStandardItem *parent); // Create a new item from 'node'
QStandardItem *addBrowserItem(tc_readable_node_t* node, QStandardItem *parent); // Return a newly created item that is a child of 'parent'
void mousePressEvent(QMouseEvent *event); // Start the drag event for an item
};

View File

@ -13,7 +13,10 @@ ReadableWidget::ReadableWidget(QWidget *parent) : QWidget(parent) {
m_readableBrowser = new ReadableBrowser(m_readableManager);
m_readableDisplay = new ReadableDisplay;
m_tabWidget->addTab(m_readableBrowser, "Browser");
m_tabWidget->addTab(m_readableDisplay, "Display");
m_mainLayout->addWidget(m_tabWidget);

View File

@ -5,6 +5,7 @@
#include <QVBoxLayout>
#include "ReadableBrowser.h"
#include "ReadableDisplay.h"
#include <ReadableManager.h>
class ReadableWidget : public QWidget {
@ -20,4 +21,5 @@ private:
QVBoxLayout *m_mainLayout;
ReadableManager *m_readableManager;
ReadableDisplay *m_readableDisplay;
};