diff --git a/core/src/flagview.cpp b/core/src/flagview.cpp index d8b9305..ca4af55 100644 --- a/core/src/flagview.cpp +++ b/core/src/flagview.cpp @@ -91,7 +91,7 @@ void FlagView::passData(QVariantMap data) } else { - QLOG_TRACE() << "unknown value type:" << i.value().typeName(); + //QLOG_TRACE() << "unknown value type:" << i.value().typeName(); } i++; } diff --git a/core/src/mainwindow.cpp b/core/src/mainwindow.cpp index e7dafe8..f4345ad 100644 --- a/core/src/mainwindow.cpp +++ b/core/src/mainwindow.cpp @@ -225,6 +225,7 @@ MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent) emsMdiWindow->setWindowTitle(emsInfo->windowTitle()); parameterView = new ParameterView(); + connect(parameterView,SIGNAL(showTable(QString)),this,SLOT(showTable(QString))); parameterMdiWindow = ui.mdiArea->addSubWindow(parameterView); parameterMdiWindow->setGeometry(parameterView->geometry()); parameterMdiWindow->hide(); @@ -749,6 +750,31 @@ void MainWindow::menu_windows_PacketStatusClicked() QApplication::postEvent(packetStatusMdiWindow, new QEvent(QEvent::Show)); QApplication::postEvent(packetStatusMdiWindow, new QEvent(QEvent::WindowActivate)); } +void MainWindow::showTable(QString table) +{ + Table2DData *data = emsComms->get2DTableData(table); + TableView2D *view = new TableView2D(); + connect(view,SIGNAL(destroyed(QObject*)),this,SLOT(rawDataViewDestroyed(QObject*))); + QString title; + //Table2DMetaData metadata = m_memoryMetaData->get2DMetaData(locid); + //view->setMetaData(metadata); + DataBlock *block = dynamic_cast(data); + if (!view->setData(table,block)) + { + return; + } + //title = metadata.tableTitle; + connect(view,SIGNAL(destroyed(QObject*)),this,SLOT(rawDataViewDestroyed(QObject*))); + + QMdiSubWindow *win = ui.mdiArea->addSubWindow(view); + //win->setWindowTitle("Ram Location 0x" + QString::number(locid,16).toUpper() + " " + title); + win->setWindowTitle("Ram Location " + table); + win->setGeometry(0,0,((view->width() < this->width()-160) ? view->width() : this->width()-160),((view->height() < this->height()-100) ? view->height() : this->height()-100)); + //m_rawDataView[locid] = view; + win->show(); + QApplication::postEvent(win, new QEvent(QEvent::Show)); + QApplication::postEvent(win, new QEvent(QEvent::WindowActivate)); +} void MainWindow::createView(unsigned short locid,DataType type) { diff --git a/core/src/mainwindow.h b/core/src/mainwindow.h index b28bbcd..092c8a2 100644 --- a/core/src/mainwindow.h +++ b/core/src/mainwindow.h @@ -171,6 +171,7 @@ class MainWindow : public QMainWindow QMap m_mdiSubWindowToActionMap; bool m_EcuResetPopup; private slots: + void showTable(QString table); void windowHidden(QMdiSubWindow* window); void bringToFrontAndShow(); void windowDestroyed(QObject *window); diff --git a/core/src/parameterview.cpp b/core/src/parameterview.cpp index 0c66eff..afb6ba0 100644 --- a/core/src/parameterview.cpp +++ b/core/src/parameterview.cpp @@ -57,6 +57,7 @@ void ParameterView::currentItemChanged(QTreeWidgetItem *current,QTreeWidgetItem if (!m_metaMenu.menulist[i].subMenuList[j].is_seperator) { QLOG_DEBUG() << "Variable:" << m_metaMenu.menulist[i].subMenuList[j].variable; + emit showTable(m_metaMenu.menulist[i].subMenuList[j].variable); for (int k=0;ksetPen(QPen(QColor::fromRgb(100,100,100))); grid->attach(ui.plot); + //curve->setData() //QwtSeriesData series; /*if (!isram) @@ -750,6 +751,24 @@ bool TableView2D::setData(unsigned short locationid,DataBlock *data) m_locationid = locationid; return updateTable(); } +bool TableView2D::setData(QString name,DataBlock *data) +{ + if (!metaDataValid) + { + m_metaData = Table2DMetaData(); + } + if (tableData == 0) + { + tableData = dynamic_cast(data); + connect(tableData,SIGNAL(update()),this,SLOT(updateTable())); + } + if (tableData == 0) + { + return false; + } + QLOG_DEBUG() << "TableView2D::passData" << name; + return updateTable(); +} bool TableView2D::updateTable() { samples.clear(); @@ -793,7 +812,7 @@ bool TableView2D::updateTable() { //Out of order table axis. QLOG_ERROR() << "2D Table axis is out of order!"; - return false; + //return false; } } else if (order == 2) @@ -802,7 +821,7 @@ bool TableView2D::updateTable() { //Out of order table axis. QLOG_ERROR() << "2D Table axis is out of order!"; - return false; + //return false; } } first = tableData->axis()[i]; @@ -844,6 +863,9 @@ bool TableView2D::updateTable() { ui.tableWidget->item(selectedlist[i].first,selectedlist[i].second)->setSelected(true); } + ui.plot->setAxisTitle(QwtPlot::xBottom,tableData->axisLabel()); + ui.plot->setAxisTitle(QwtPlot::yLeft,tableData->valueLabel()); + selectedlist.clear(); //ui.tableWidget->resizeColumnsToContents(); diff --git a/core/src/tableview2d.h b/core/src/tableview2d.h index 423bd96..bf72fdf 100644 --- a/core/src/tableview2d.h +++ b/core/src/tableview2d.h @@ -44,6 +44,7 @@ class TableView2D : public DataView //bool setData(unsigned short locationid,QByteArray rawdata); void setMetaData(Table2DMetaData metadata); bool setData(unsigned short locationid,DataBlock *data); + bool setData(QString name,DataBlock *data); //void passData(unsigned short locationid,Table2DData data); void passDatalog(QVariantMap data); private: diff --git a/lib/core/emscomms.h b/lib/core/emscomms.h index 071eda9..8073786 100644 --- a/lib/core/emscomms.h +++ b/lib/core/emscomms.h @@ -110,6 +110,8 @@ class EmsComms : public QThread virtual void startInterrogation()=0; virtual Table2DData* get2DTableData(unsigned short locationid)=0; virtual Table3DData* get3DTableData(unsigned short locationid)=0; + virtual Table2DData* get2DTableData(QString locationname)=0; + virtual Table3DData* get3DTableData(QString locationname)=0; virtual RawData* getRawData(unsigned short locationid)=0; virtual ConfigData* getConfigData(QString name) = 0; virtual QList getConfigList()=0; diff --git a/lib/core/table2ddata.h b/lib/core/table2ddata.h index 65166f8..cf425f0 100644 --- a/lib/core/table2ddata.h +++ b/lib/core/table2ddata.h @@ -79,6 +79,8 @@ class Table2DData : public DataBlock virtual void setWritesEnabled(bool enabled) = 0; virtual void writeWholeLocation(bool ram) = 0; virtual bool isRam()=0; + virtual QString axisLabel()=0; + virtual QString valueLabel()=0; signals: void saveSingleData(unsigned short locationid,QByteArray data, unsigned short offset, unsigned short size); public slots: diff --git a/plugins/freeems/fetable2ddata.h b/plugins/freeems/fetable2ddata.h index 30a1673..f8e08af 100644 --- a/plugins/freeems/fetable2ddata.h +++ b/plugins/freeems/fetable2ddata.h @@ -45,6 +45,8 @@ class FETable2DData : public Table2DData double maxCalcedYAxis(); double minCalcedXAxis(); double minCalcedYAxis(); + QString axisLabel() { return ""; } + QString valueLabel() { return ""; } QList axis(); QList values(); @@ -75,8 +77,8 @@ class FETable2DData : public Table2DData unsigned short m_locationId; QList m_axis; QList m_values; - QString axisLabel; - QString valuesLabel; + QString m_axisLabel; + QString m_valuesLabel; void reCalcAxisData(); signals: void saveSingleDataToFlash(unsigned short locationid,unsigned short offset, unsigned short size,QByteArray data); diff --git a/plugins/freeems/freeemscomms.cpp b/plugins/freeems/freeemscomms.cpp index 63c6d10..01c945f 100644 --- a/plugins/freeems/freeemscomms.cpp +++ b/plugins/freeems/freeemscomms.cpp @@ -1785,6 +1785,36 @@ Table3DData* FreeEmsComms::get3DTableData(unsigned short locationid) } return m_3dTableMap[locationid]; } +Table2DData* FreeEmsComms::get2DTableData(QString locationname) +{ + bool ok = false; + unsigned short locid = locationname.toInt(&ok,16); + if (!ok) + { + return 0; + } + if (!m_2dTableMap.contains(locid)) + { + return 0; + } + return m_2dTableMap.value(locid); +} + +Table3DData* FreeEmsComms::get3DTableData(QString locationname) +{ + bool ok = false; + unsigned short locid = locationname.toInt(&ok,16); + if (!ok) + { + return 0; + } + if (!m_3dTableMap.contains(locid)) + { + return 0; + } + return m_3dTableMap.value(locid); +} + RawData* FreeEmsComms::getRawData(unsigned short locationid) { if (!m_rawDataMap.contains(locationid)) diff --git a/plugins/freeems/freeemscomms.h b/plugins/freeems/freeemscomms.h index 598caa9..6c0a0c1 100644 --- a/plugins/freeems/freeemscomms.h +++ b/plugins/freeems/freeemscomms.h @@ -89,6 +89,8 @@ class FreeEmsComms : public EmsComms int disableDatalogStream(); Table2DData* get2DTableData(unsigned short locationid); Table3DData* get3DTableData(unsigned short locationid); + Table2DData* get2DTableData(QString locationname); + Table3DData* get3DTableData(QString locationname); RawData* getRawData(unsigned short locationid); ConfigData* getConfigData(QString name); QList getConfigList();