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/EnumEditor.h',
'widgets/ReadableWidget.h', 'widgets/ReadableWidget.h',
'widgets/ReadableBrowser.h', 'widgets/ReadableBrowser.h',
'widgets/ReadableDisplay.h',
'data/AssignableManager.h', 'data/AssignableManager.h',
'data/AssignableEditorDelegate.h'], 'data/AssignableEditorDelegate.h'],
dependencies : qt5_dep) dependencies : qt5_dep)
@ -19,6 +20,7 @@ sources = ['main.cpp',
'widgets/EnumEditor.cpp', 'widgets/EnumEditor.cpp',
'widgets/ReadableWidget.cpp', 'widgets/ReadableWidget.cpp',
'widgets/ReadableBrowser.cpp', 'widgets/ReadableBrowser.cpp',
'widgets/ReadableDisplay.cpp',
'data/AssignableData.cpp', 'data/AssignableData.cpp',
'data/AssignableEditorDelegate.cpp', 'data/AssignableEditorDelegate.cpp',
'data/AssignableManager.cpp', 'data/AssignableManager.cpp',

View File

@ -1,5 +1,6 @@
#include "ReadableBrowser.h" #include "ReadableBrowser.h"
#include <QMouseEvent>
#include <QDebug> #include <QDebug>
ReadableBrowser::ReadableBrowser(ReadableManager *readableManager, QWidget *parent) : QWidget(parent) { ReadableBrowser::ReadableBrowser(ReadableManager *readableManager, QWidget *parent) : QWidget(parent) {
@ -30,32 +31,54 @@ void ReadableBrowser::genBrowserTree(QTreeView *treeView, QStandardItemModel *it
if (node->name) { if (node->name) {
qDebug() << 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++) { 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(); //tc_readable_node_t *root = m_readableManager->root();
QVector <tc_readable_node_t*> rootNodes = m_readableManager->rootNodes(); QVector <tc_readable_node_t*> rootNodes = m_readableManager->rootNodes();
for (tc_readable_node_t *node : 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->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 // Don't add item for constants
if (node->constant) { if (node->constant) {
return; return nullptr;
} }
if (!node->name) { if (!node->name) {
return; return nullptr;
} }
QStandardItem *item = new QStandardItem; QStandardItem *item = new QStandardItem;
item->setText(node->name); item->setText(node->name);
item->setDragEnabled(true);
parent->appendRow(item); 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 <ReadableManager.h>
#include <QWidget> #include <QWidget>
#include <QDrag>
#include <QDropEvent>
#include <QVBoxLayout> #include <QVBoxLayout>
#include <QTreeView> #include <QTreeView>
#include <QStandardItemModel> #include <QStandardItemModel>
class ReadableBrowser : public QWidget { class ReadableBrowser : public QWidget {
Q_OBJECT
public: public:
ReadableBrowser(ReadableManager *readableManager, QWidget *parent = nullptr); ReadableBrowser(ReadableManager *readableManager, QWidget *parent = nullptr);
~ReadableBrowser(); ~ReadableBrowser();
signals:
void itemDragStarted(QString &text);
private: private:
ReadableManager *m_readableManager; // ReadableManager instance that the browser is generated from ReadableManager *m_readableManager; // ReadableManager instance that the browser is generated from
@ -19,5 +24,7 @@ private:
QStandardItemModel *m_browserModel; QStandardItemModel *m_browserModel;
void genBrowserTree(QTreeView *treeView, QStandardItemModel *itemModel); 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_readableBrowser = new ReadableBrowser(m_readableManager);
m_readableDisplay = new ReadableDisplay;
m_tabWidget->addTab(m_readableBrowser, "Browser"); m_tabWidget->addTab(m_readableBrowser, "Browser");
m_tabWidget->addTab(m_readableDisplay, "Display");
m_mainLayout->addWidget(m_tabWidget); m_mainLayout->addWidget(m_tabWidget);

View File

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