diff --git a/core/src/gauges.qml b/core/src/gauges.qml index 611cf5a..da22b7f 100644 --- a/core/src/gauges.qml +++ b/core/src/gauges.qml @@ -7,6 +7,7 @@ Rectangle { width: 1280 height: 900 color: "black" + property string plugincompat: "FREEEMS" GaugeImage { x:0 @@ -177,4 +178,4 @@ Rectangle { } } } -} \ No newline at end of file +} diff --git a/core/src/gaugeview.cpp b/core/src/gaugeview.cpp index e62195b..68a6a81 100644 --- a/core/src/gaugeview.cpp +++ b/core/src/gaugeview.cpp @@ -47,10 +47,11 @@ void GaugeView::passData(QVariantMap data) { m_valueMap = data; } -void GaugeView::setFile(QString file) +QString GaugeView::setFile(QString file) { - widget->setFile(file); + QString result = widget->setFile(file); propertiesInUse = widget->getPropertiesInUse(); + return result; } void GaugeView::passDecoder(DataPacketDecoder *decoder) diff --git a/core/src/gaugeview.h b/core/src/gaugeview.h index cc979bd..1bd28b2 100644 --- a/core/src/gaugeview.h +++ b/core/src/gaugeview.h @@ -37,7 +37,7 @@ class GaugeView : public QWidget ~GaugeView(); void passData(QVariantMap data); void passDecoder(DataPacketDecoder *decoder); - void setFile(QString file); + QString setFile(QString file); private: QList propertiesInUse; QString file; diff --git a/core/src/gaugewidget.cpp b/core/src/gaugewidget.cpp index 3a95a1d..58dbf53 100644 --- a/core/src/gaugewidget.cpp +++ b/core/src/gaugewidget.cpp @@ -22,7 +22,7 @@ #include "gaugewidget.h" #include "roundgaugeitem.h" #include "bargaugeitem.h" - +#include "QsLog.h" #include #include #include @@ -50,7 +50,7 @@ GaugeWidget::GaugeWidget(QWidget *parent) : QDeclarativeView(parent) }*/ } -void GaugeWidget::setFile(QString file) +QString GaugeWidget::setFile(QString file) { setSource(QUrl::fromLocalFile(file)); if (rootObject()) @@ -63,5 +63,12 @@ void GaugeWidget::setFile(QString file) propertylist.append(obj->property("propertyMapProperty").toString()); } } + if (rootObject()->property("plugincompat").isValid()) + { + QString plugincompat = rootObject()->property("plugincompat").toString(); + QLOG_DEBUG() << "Plugin compatability:" << plugincompat; + return plugincompat; + } } + return ""; } diff --git a/core/src/gaugewidget.h b/core/src/gaugewidget.h index 2474c1f..68a8fd6 100644 --- a/core/src/gaugewidget.h +++ b/core/src/gaugewidget.h @@ -30,7 +30,7 @@ class GaugeWidget : public QDeclarativeView public: GaugeWidget(QWidget *parent=0); QDeclarativePropertyMap propertyMap; - void setFile(QString file); + QString setFile(QString file); const QList getPropertiesInUse() { return propertylist; } private: QList propertylist; diff --git a/core/src/mainwindow.cpp b/core/src/mainwindow.cpp index 5b1aaa1..4afb9e6 100644 --- a/core/src/mainwindow.cpp +++ b/core/src/mainwindow.cpp @@ -1295,13 +1295,19 @@ void MainWindow::loadDashboards(QString dir) mdiView->setGeometry(view->geometry()); mdiView->hide(); mdiView->setWindowTitle(view->windowTitle()); - view->setFile(dashboards.absoluteFilePath(file)); + QString plugincompat = view->setFile(dashboards.absoluteFilePath(file)); QAction *action = new QAction(this); action->setText(file.mid(0,file.lastIndexOf("."))); action->setCheckable(true); ui.menuDashboards->addAction(action); connect(action,SIGNAL(triggered(bool)),mdiView,SLOT(setVisible(bool))); m_dashboardList.append(view); + if (!m_gaugeActionMap.contains(plugincompat)) + { + m_gaugeActionMap[plugincompat] = QList(); + } + m_gaugeActionMap[plugincompat].append(action); + } } } @@ -1362,6 +1368,24 @@ void MainWindow::emsCommsConnected() m_wizardList[j]->addConfig(emsComms->getConfigList()[i],emsComms->getConfigData(emsComms->getConfigList()[i])); }*/ } + if (m_gaugeActionMap.contains(emsComms->getPluginCompat())) + { + for (int i=0;iactions().size();i++) + { + if (!m_gaugeActionMap[emsComms->getPluginCompat()].contains(ui.menuDashboards->actions()[i])) + { + ui.menuDashboards->actions()[i]->setVisible(false); + + } + } + } + else if (emsComms->getPluginCompat() != "") + { + for (int i=0;iactions().size();i++) + { + ui.menuDashboards->actions()[i]->setVisible(false); + } + } //New log and settings file here. if (m_memoryInfoMap.size() == 0) { @@ -1421,110 +1445,117 @@ void MainWindow::interrogationComplete() } bool oneShown = false; //Check to see if at least one window is visisble. QSettings windowsettings; - int size = windowsettings.beginReadArray("rawwindows"); - for (int i=0;iparent(); - parent->restoreGeometry(windowsettings.value("location").toByteArray()); - } - else if (type == "TableView3D") - { - createView(locid,DATA_TABLE_3D); - QWidget *parent = (QWidget*)m_rawDataView[locid]->parent(); - parent->restoreGeometry(windowsettings.value("location").toByteArray()); - } - else if (type == "tablesMdiWindow") + QString compat = emsComms->getPluginCompat(); + QString savecompat = windowsettings.value("plugincompat","").toString(); + if (compat == savecompat) + { + windowsettings.sync(); + int size = windowsettings.beginReadArray("rawwindows"); + for (int i=0;irestoreGeometry(windowsettings.value("location").toByteArray()); - bool hidden = windowsettings.value("hidden",true).toBool(); - if (!hidden) + //createView() + windowsettings.setArrayIndex(i); + unsigned short locid = windowsettings.value("window").toInt(); + QString type = windowsettings.value("type").toString(); + if (type == "TableView2D") + { + createView(locid,DATA_TABLE_2D); + QWidget *parent = (QWidget*)m_rawDataView[locid]->parent(); + parent->restoreGeometry(windowsettings.value("location").toByteArray()); + } + else if (type == "TableView3D") { - oneShown = true; + createView(locid,DATA_TABLE_3D); + QWidget *parent = (QWidget*)m_rawDataView[locid]->parent(); + parent->restoreGeometry(windowsettings.value("location").toByteArray()); } - tablesMdiWindow->setHidden(hidden); + else if (type == "tablesMdiWindow") + { + tablesMdiWindow->restoreGeometry(windowsettings.value("location").toByteArray()); + bool hidden = windowsettings.value("hidden",true).toBool(); + if (!hidden) + { + oneShown = true; + } + tablesMdiWindow->setHidden(hidden); - } - else if (type == "firmwareMetaMdiWindow") - { - firmwareMetaMdiWindow->restoreGeometry(windowsettings.value("location").toByteArray()); - bool hidden = windowsettings.value("hidden",true).toBool(); - if (!hidden) + } + else if (type == "firmwareMetaMdiWindow") { - oneShown = true; + firmwareMetaMdiWindow->restoreGeometry(windowsettings.value("location").toByteArray()); + bool hidden = windowsettings.value("hidden",true).toBool(); + if (!hidden) + { + oneShown = true; + } + firmwareMetaMdiWindow->setHidden(hidden); } - firmwareMetaMdiWindow->setHidden(hidden); - } - else if (type == "interrogateProgressMdiWindow") - { - // interrogateProgressMdiWindow->restoreGeometry(windowsettings.value("location").toByteArray()); - // interrogateProgressMdiWindow->setHidden(windowsettings.value("hidden",true).toBool()); - } - else if (type == "emsMdiWindow") - { - emsMdiWindow->restoreGeometry(windowsettings.value("location").toByteArray()); - bool hidden = windowsettings.value("hidden",true).toBool(); - if (!hidden) + else if (type == "interrogateProgressMdiWindow") { - oneShown = true; + // interrogateProgressMdiWindow->restoreGeometry(windowsettings.value("location").toByteArray()); + // interrogateProgressMdiWindow->setHidden(windowsettings.value("hidden",true).toBool()); } - emsMdiWindow->setHidden(hidden); - } - else if (type == "flagsMdiWindow") - { - flagsMdiWindow->restoreGeometry(windowsettings.value("location").toByteArray()); - bool hidden = windowsettings.value("hidden",true).toBool(); - if (!hidden) + else if (type == "emsMdiWindow") { - oneShown = true; + emsMdiWindow->restoreGeometry(windowsettings.value("location").toByteArray()); + bool hidden = windowsettings.value("hidden",true).toBool(); + if (!hidden) + { + oneShown = true; + } + emsMdiWindow->setHidden(hidden); } - flagsMdiWindow->setHidden(hidden); - } - else if (type == "gaugesMdiWindow") - { - gaugesMdiWindow->restoreGeometry(windowsettings.value("location").toByteArray()); - bool hidden = windowsettings.value("hidden",true).toBool(); - if (!hidden) + else if (type == "flagsMdiWindow") { - oneShown = true; + flagsMdiWindow->restoreGeometry(windowsettings.value("location").toByteArray()); + bool hidden = windowsettings.value("hidden",true).toBool(); + if (!hidden) + { + oneShown = true; + } + flagsMdiWindow->setHidden(hidden); } - gaugesMdiWindow->setHidden(hidden); - } - else if (type == "packetStatusMdiWindow") - { - packetStatusMdiWindow->restoreGeometry(windowsettings.value("location").toByteArray()); - bool hidden = windowsettings.value("hidden",true).toBool(); - if (!hidden) + else if (type == "gaugesMdiWindow") { - oneShown = true; + gaugesMdiWindow->restoreGeometry(windowsettings.value("location").toByteArray()); + bool hidden = windowsettings.value("hidden",true).toBool(); + if (!hidden) + { + oneShown = true; + } + gaugesMdiWindow->setHidden(hidden); } - packetStatusMdiWindow->setHidden(hidden); - } - else if (type == "aboutMdiWindow") - { - aboutMdiWindow->restoreGeometry(windowsettings.value("location").toByteArray()); - bool hidden = windowsettings.value("hidden",true).toBool(); - if (!hidden) + else if (type == "packetStatusMdiWindow") { - oneShown = true; + packetStatusMdiWindow->restoreGeometry(windowsettings.value("location").toByteArray()); + bool hidden = windowsettings.value("hidden",true).toBool(); + if (!hidden) + { + oneShown = true; + } + packetStatusMdiWindow->setHidden(hidden); } - aboutMdiWindow->setHidden(hidden); - } - else if (type == "emsStatusMdiWindow") - { + else if (type == "aboutMdiWindow") + { + aboutMdiWindow->restoreGeometry(windowsettings.value("location").toByteArray()); + bool hidden = windowsettings.value("hidden",true).toBool(); + if (!hidden) + { + oneShown = true; + } + aboutMdiWindow->setHidden(hidden); + } + else if (type == "emsStatusMdiWindow") + { - } - else - { - qDebug() << "Unknown type:" << type; - } + } + else + { + qDebug() << "Unknown type:" << type; + } + } + windowsettings.endArray(); } if (!oneShown) { @@ -1540,7 +1571,7 @@ void MainWindow::interrogationComplete() QMdiSubWindow *packetStatusMdiWindow; QMdiSubWindow *aboutMdiWindow; QMdiSubWindow *emsStatusMdiWindow;*/ - windowsettings.endArray(); + /*for (QMap::const_iterator i=m_rawDataView.constBegin();i!=m_rawDataView.constEnd();i++) { windowsettings.setArrayIndex(val++); @@ -2057,6 +2088,13 @@ MainWindow::~MainWindow() windowsettings.endGroup(); windowsettings.sync(); + if (emsComms) + { + QString compat = emsComms->getPluginCompat(); + windowsettings.setValue("plugincompat",compat); + windowsettings.sync(); + } + //Remove all WizardView windows for (int i=0;i m_mdiSubWindowToActionMap; bool m_EcuResetPopup; + QMap > m_gaugeActionMap; private slots: void showTable(QString table); void windowHidden(QMdiSubWindow* window); diff --git a/lib/core/emscomms.h b/lib/core/emscomms.h index 8073786..a0156fe 100644 --- a/lib/core/emscomms.h +++ b/lib/core/emscomms.h @@ -75,6 +75,7 @@ class EmsComms : public QThread Q_OBJECT public: EmsComms(QObject *parent) : QThread(parent) {} + virtual QString getPluginCompat()=0; virtual void passLogger(QsLogging::Logger *log)=0; virtual void stop()=0; virtual void setLogsEnabled(bool enabled)=0; diff --git a/plugins/freeems/freeemscomms.h b/plugins/freeems/freeemscomms.h index 4800f81..07b82d0 100644 --- a/plugins/freeems/freeemscomms.h +++ b/plugins/freeems/freeemscomms.h @@ -48,6 +48,7 @@ class FreeEmsComms : public EmsComms public: FreeEmsComms(QObject *parent = 0); ~FreeEmsComms(); + QString getPluginCompat() { return QString("FREEEMS"); } DataPacketDecoder *getDecoder(); MemoryMetaData *getMetaParser(); Table3DData *getNew3DTableData();