summaryrefslogtreecommitdiffstats
path: root/examples/serialbus
diff options
context:
space:
mode:
authorAndre Hartmann <aha_1980@gmx.de>2016-04-28 09:02:51 +0200
committerAndré Hartmann <aha_1980@gmx.de>2016-05-03 10:25:21 +0000
commit9e3af4a3a828a0c632ef07969005f46fd30bee63 (patch)
treed4882451dc676f6a3cb50f611fce53b1e6a5ba83 /examples/serialbus
parentf183c72e5bd0bd253073783992d9bf860e0087ad (diff)
CAN-Example: Change SettingsDialog to ConnectDialog
This simplifies the handling and makes it more like how other CAN monitors behave. * After startup, the connect dialog is shown * If the dialog is accepted, the selected device is connected instantly * To interrupt a connection, the disconnect action can be used * To connect again, the action connect can be used Change-Id: I47db596658e90cc0393981fba135cd6d89191f1a Reviewed-by: Alex Blasche <alexander.blasche@theqtcompany.com>
Diffstat (limited to 'examples/serialbus')
-rw-r--r--examples/serialbus/can/can.pro6
-rw-r--r--examples/serialbus/can/can.qrc1
-rw-r--r--examples/serialbus/can/connectdialog.cpp (renamed from examples/serialbus/can/settingsdialog.cpp)82
-rw-r--r--examples/serialbus/can/connectdialog.h (renamed from examples/serialbus/can/settingsdialog.h)21
-rw-r--r--examples/serialbus/can/connectdialog.ui (renamed from examples/serialbus/can/settingsdialog.ui)43
-rw-r--r--examples/serialbus/can/images/settings.pngbin16039 -> 0 bytes
-rw-r--r--examples/serialbus/can/mainwindow.cpp19
-rw-r--r--examples/serialbus/can/mainwindow.h4
-rw-r--r--examples/serialbus/can/mainwindow.ui19
9 files changed, 118 insertions, 77 deletions
diff --git a/examples/serialbus/can/can.pro b/examples/serialbus/can/can.pro
index bf22fc5..aa2234f 100644
--- a/examples/serialbus/can/can.pro
+++ b/examples/serialbus/can/can.pro
@@ -5,13 +5,13 @@ TEMPLATE = app
SOURCES += main.cpp \
mainwindow.cpp \
- settingsdialog.cpp
+ connectdialog.cpp
HEADERS += mainwindow.h \
- settingsdialog.h
+ connectdialog.h
FORMS += mainwindow.ui \
- settingsdialog.ui
+ connectdialog.ui
RESOURCES += can.qrc
diff --git a/examples/serialbus/can/can.qrc b/examples/serialbus/can/can.qrc
index 0b49879..1b8d697 100644
--- a/examples/serialbus/can/can.qrc
+++ b/examples/serialbus/can/can.qrc
@@ -3,7 +3,6 @@
<file>images/connect.png</file>
<file>images/disconnect.png</file>
<file>images/application-exit.png</file>
- <file>images/settings.png</file>
<file>images/clear.png</file>
</qresource>
</RCC>
diff --git a/examples/serialbus/can/settingsdialog.cpp b/examples/serialbus/can/connectdialog.cpp
index d61f4c6..7495832 100644
--- a/examples/serialbus/can/settingsdialog.cpp
+++ b/examples/serialbus/can/connectdialog.cpp
@@ -38,15 +38,15 @@
**
****************************************************************************/
-#include "settingsdialog.h"
-#include "ui_settingsdialog.h"
+#include "connectdialog.h"
+#include "ui_connectdialog.h"
#include <QCanBus>
#include <QDebug>
-SettingsDialog::SettingsDialog(QWidget *parent) :
+ConnectDialog::ConnectDialog(QWidget *parent) :
QDialog(parent),
- m_ui(new Ui::SettingsDialog),
+ m_ui(new Ui::ConnectDialog),
m_customSpeedValidator(0)
{
m_ui->setupUi(this);
@@ -62,11 +62,15 @@ SettingsDialog::SettingsDialog(QWidget *parent) :
m_ui->receiveOwnBox->addItem(tr("false"), QVariant(false));
m_ui->receiveOwnBox->addItem(tr("true"), QVariant(true));
- connect(m_ui->applyButton, &QPushButton::clicked, this, &SettingsDialog::apply);
+ m_ui->canFdBox->addItem(tr("false"), QVariant(false));
+ m_ui->canFdBox->addItem(tr("true"), QVariant(true));
+
+ connect(m_ui->okButton, &QPushButton::clicked, this, &ConnectDialog::ok);
+ connect(m_ui->cancelButton, &QPushButton::clicked, this, &ConnectDialog::cancel);
connect(m_ui->useConfigurationBox, &QCheckBox::clicked, m_ui->configurationBox, &QGroupBox::setEnabled);
connect(m_ui->speedBox, static_cast<void (QComboBox::*)(int)>(&QComboBox::currentIndexChanged),
- this, &SettingsDialog::checkCustomSpeedPolicy);
+ this, &ConnectDialog::checkCustomSpeedPolicy);
m_ui->rawFilterEdit->hide();
m_ui->rawFilterLabel->hide();
@@ -77,17 +81,17 @@ SettingsDialog::SettingsDialog(QWidget *parent) :
updateSettings();
}
-SettingsDialog::~SettingsDialog()
+ConnectDialog::~ConnectDialog()
{
delete m_ui;
}
-SettingsDialog::Settings SettingsDialog::settings() const
+ConnectDialog::Settings ConnectDialog::settings() const
{
return m_currentSettings;
}
-void SettingsDialog::checkCustomSpeedPolicy(int idx)
+void ConnectDialog::checkCustomSpeedPolicy(int idx)
{
const bool isCustomSpeed = !m_ui->speedBox->itemData(idx).isValid();
m_ui->speedBox->setEditable(isCustomSpeed);
@@ -98,13 +102,61 @@ void SettingsDialog::checkCustomSpeedPolicy(int idx)
}
}
-void SettingsDialog::apply()
+void ConnectDialog::ok()
{
updateSettings();
- hide();
+ accept();
+}
+
+void ConnectDialog::cancel()
+{
+ revertSettings();
+ reject();
+}
+
+QString ConnectDialog::configurationValue(QCanBusDevice::ConfigurationKey key)
+{
+ QVariant result;
+
+ foreach (const ConfigurationItem &item, m_currentSettings.configurations) {
+ if (item.first == key) {
+ result = item.second;
+ break;
+ }
+ }
+
+ if (result.isNull() && (
+ key == QCanBusDevice::LoopbackKey ||
+ key == QCanBusDevice::ReceiveOwnKey)) {
+ return tr("unspecified");
+ }
+
+ return result.toString();
+}
+
+void ConnectDialog::revertSettings()
+{
+ m_ui->backendListBox->setCurrentText(m_currentSettings.backendName);
+ m_ui->interfaceNameEdit->setText(m_currentSettings.deviceInterfaceName);
+ m_ui->useConfigurationBox->setChecked(m_currentSettings.useConfigurationEnabled);
+
+ QString value = configurationValue(QCanBusDevice::LoopbackKey);
+ m_ui->loopbackBox->setCurrentText(value);
+
+ value = configurationValue(QCanBusDevice::ReceiveOwnKey);
+ m_ui->receiveOwnBox->setCurrentText(value);
+
+ value = configurationValue(QCanBusDevice::ErrorFilterKey);
+ m_ui->errorFilterEdit->setText(value);
+
+ value = configurationValue(QCanBusDevice::BitRateKey);
+ m_ui->speedBox->setCurrentText(value);
+
+ value = configurationValue(QCanBusDevice::CanFdKey);
+ m_ui->canFdBox->setCurrentText(value);
}
-void SettingsDialog::updateSettings()
+void ConnectDialog::updateSettings()
{
m_currentSettings.backendName = m_ui->backendListBox->currentText();
m_currentSettings.deviceInterfaceName = m_ui->interfaceNameEdit->text();
@@ -164,18 +216,18 @@ void SettingsDialog::updateSettings()
// process CAN FD setting
ConfigurationItem fdItem;
fdItem.first = QCanBusDevice::CanFdKey;
- fdItem.second = QVariant(m_ui->canFdBox->currentIndex() == 1); // 0 -> no, 1 - yes
+ fdItem.second = m_ui->canFdBox->currentData();
m_currentSettings.configurations.append(fdItem);
}
}
-void SettingsDialog::fillBackends()
+void ConnectDialog::fillBackends()
{
foreach (const QByteArray &backend, QCanBus::instance()->plugins())
m_ui->backendListBox->addItem(backend);
}
-void SettingsDialog::fillSpeeds()
+void ConnectDialog::fillSpeeds()
{
m_ui->speedBox->addItem(QStringLiteral("10000"), 10000);
m_ui->speedBox->addItem(QStringLiteral("20000"), 20000);
diff --git a/examples/serialbus/can/settingsdialog.h b/examples/serialbus/can/connectdialog.h
index 2b51f09..7a46c86 100644
--- a/examples/serialbus/can/settingsdialog.h
+++ b/examples/serialbus/can/connectdialog.h
@@ -38,8 +38,8 @@
**
****************************************************************************/
-#ifndef SETTINGSDIALOG_H
-#define SETTINGSDIALOG_H
+#ifndef CONNECTDIALOG_H
+#define CONNECTDIALOG_H
#include <QCanBusDevice>
@@ -48,14 +48,14 @@
QT_BEGIN_NAMESPACE
namespace Ui {
-class SettingsDialog;
+class ConnectDialog;
}
class QIntValidator;
QT_END_NAMESPACE
-class SettingsDialog : public QDialog
+class ConnectDialog : public QDialog
{
Q_OBJECT
@@ -69,24 +69,27 @@ public:
bool useConfigurationEnabled;
};
- explicit SettingsDialog(QWidget *parent = nullptr);
- ~SettingsDialog();
+ explicit ConnectDialog(QWidget *parent = nullptr);
+ ~ConnectDialog();
Settings settings() const;
private slots:
void checkCustomSpeedPolicy(int idx);
- void apply();
+ void ok();
+ void cancel();
private:
+ QString configurationValue(QCanBusDevice::ConfigurationKey key);
+ void revertSettings();
void updateSettings();
void fillBackends();
void fillSpeeds();
private:
- Ui::SettingsDialog *m_ui;
+ Ui::ConnectDialog *m_ui;
QIntValidator *m_customSpeedValidator;
Settings m_currentSettings;
};
-#endif // SETTINGSDIALOG_H
+#endif // CONNECTDIALOG_H
diff --git a/examples/serialbus/can/settingsdialog.ui b/examples/serialbus/can/connectdialog.ui
index 37491a2..5f35b14 100644
--- a/examples/serialbus/can/settingsdialog.ui
+++ b/examples/serialbus/can/connectdialog.ui
@@ -1,17 +1,17 @@
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
- <class>SettingsDialog</class>
- <widget class="QDialog" name="SettingsDialog">
+ <class>ConnectDialog</class>
+ <widget class="QDialog" name="ConnectDialog">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
- <width>406</width>
- <height>254</height>
+ <width>441</width>
+ <height>281</height>
</rect>
</property>
<property name="windowTitle">
- <string>Settings</string>
+ <string>Connect</string>
</property>
<layout class="QGridLayout" name="gridLayout_2">
<item row="4" column="0" colspan="2">
@@ -30,9 +30,25 @@
</spacer>
</item>
<item>
- <widget class="QPushButton" name="applyButton">
+ <widget class="QPushButton" name="cancelButton">
<property name="text">
- <string>Apply</string>
+ <string>Cancel</string>
+ </property>
+ <property name="autoDefault">
+ <bool>false</bool>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QPushButton" name="okButton">
+ <property name="text">
+ <string>OK</string>
+ </property>
+ <property name="autoDefault">
+ <bool>false</bool>
+ </property>
+ <property name="default">
+ <bool>true</bool>
</property>
</widget>
</item>
@@ -128,18 +144,7 @@
</widget>
</item>
<item row="5" column="1">
- <widget class="QComboBox" name="canFdBox">
- <item>
- <property name="text">
- <string>no</string>
- </property>
- </item>
- <item>
- <property name="text">
- <string>yes</string>
- </property>
- </item>
- </widget>
+ <widget class="QComboBox" name="canFdBox"/>
</item>
</layout>
</widget>
diff --git a/examples/serialbus/can/images/settings.png b/examples/serialbus/can/images/settings.png
deleted file mode 100644
index 3d1042e..0000000
--- a/examples/serialbus/can/images/settings.png
+++ /dev/null
Binary files differ
diff --git a/examples/serialbus/can/mainwindow.cpp b/examples/serialbus/can/mainwindow.cpp
index 07ef95b..4ac7ca7 100644
--- a/examples/serialbus/can/mainwindow.cpp
+++ b/examples/serialbus/can/mainwindow.cpp
@@ -40,10 +40,11 @@
#include "mainwindow.h"
#include "ui_mainwindow.h"
-#include "settingsdialog.h"
+#include "connectdialog.h"
#include <QCanBusFrame>
#include <QCanBus>
+#include <QTimer>
#include <QtCore/qbytearray.h>
#include <QtCore/qvariant.h>
@@ -56,7 +57,7 @@ MainWindow::MainWindow(QWidget *parent) :
{
m_ui->setupUi(this);
- m_settings = new SettingsDialog;
+ m_connectDialog = new ConnectDialog;
m_status = new QLabel;
m_ui->statusBar->addWidget(m_status);
@@ -64,6 +65,7 @@ MainWindow::MainWindow(QWidget *parent) :
m_ui->sendMessagesBox->setEnabled(false);
initActionsConnections();
+ QTimer::singleShot(50, m_connectDialog, &ConnectDialog::show);
connect(m_ui->sendButton, &QPushButton::clicked, this, &MainWindow::sendMessage);
}
@@ -72,7 +74,7 @@ MainWindow::~MainWindow()
{
delete m_canDevice;
- delete m_settings;
+ delete m_connectDialog;
delete m_ui;
}
@@ -86,12 +88,11 @@ void MainWindow::initActionsConnections()
m_ui->actionConnect->setEnabled(true);
m_ui->actionDisconnect->setEnabled(false);
m_ui->actionQuit->setEnabled(true);
- m_ui->actionConfigure->setEnabled(true);
- connect(m_ui->actionConnect, &QAction::triggered, this, &MainWindow::connectDevice);
+ connect(m_ui->actionConnect, &QAction::triggered, m_connectDialog, &ConnectDialog::show);
+ connect(m_connectDialog, &QDialog::accepted, this, &MainWindow::connectDevice);
connect(m_ui->actionDisconnect, &QAction::triggered, this, &MainWindow::disconnectDevice);
connect(m_ui->actionQuit, &QAction::triggered, this, &QWidget::close);
- connect(m_ui->actionConfigure, &QAction::triggered, m_settings, &SettingsDialog::show);
connect(m_ui->actionAboutQt, &QAction::triggered, qApp, &QApplication::aboutQt);
}
@@ -111,7 +112,7 @@ void MainWindow::receiveError(QCanBusDevice::CanBusError error) const
void MainWindow::connectDevice()
{
- const SettingsDialog::Settings p = m_settings->settings();
+ const ConnectDialog::Settings p = m_connectDialog->settings();
m_canDevice = QCanBus::instance()->createDevice(p.backendName.toLocal8Bit(), p.deviceInterfaceName);
if (!m_canDevice) {
@@ -127,7 +128,7 @@ void MainWindow::connectDevice()
this, &MainWindow::framesWritten);
if (p.useConfigurationEnabled) {
- foreach (const SettingsDialog::ConfigurationItem &item, p.configurations)
+ foreach (const ConnectDialog::ConfigurationItem &item, p.configurations)
m_canDevice->setConfigurationParameter(item.first, item.second);
}
@@ -139,7 +140,6 @@ void MainWindow::connectDevice()
} else {
m_ui->actionConnect->setEnabled(false);
m_ui->actionDisconnect->setEnabled(true);
- m_ui->actionConfigure->setEnabled(false);
m_ui->sendMessagesBox->setEnabled(true);
@@ -159,7 +159,6 @@ void MainWindow::disconnectDevice()
m_ui->actionConnect->setEnabled(true);
m_ui->actionDisconnect->setEnabled(false);
- m_ui->actionConfigure->setEnabled(true);
m_ui->sendMessagesBox->setEnabled(false);
diff --git a/examples/serialbus/can/mainwindow.h b/examples/serialbus/can/mainwindow.h
index 8e1b142..aff6c94 100644
--- a/examples/serialbus/can/mainwindow.h
+++ b/examples/serialbus/can/mainwindow.h
@@ -45,7 +45,7 @@
#include <QMainWindow>
-class SettingsDialog;
+class ConnectDialog;
QT_BEGIN_NAMESPACE
@@ -81,7 +81,7 @@ private:
Ui::MainWindow *m_ui;
QLabel *m_status;
- SettingsDialog *m_settings;
+ ConnectDialog *m_connectDialog;
QCanBusDevice *m_canDevice;
};
diff --git a/examples/serialbus/can/mainwindow.ui b/examples/serialbus/can/mainwindow.ui
index cd3eec7..9700024 100644
--- a/examples/serialbus/can/mainwindow.ui
+++ b/examples/serialbus/can/mainwindow.ui
@@ -161,7 +161,7 @@ Otherwise, the standard format with 11 bit idenfier is used.</string>
<x>0</x>
<y>0</y>
<width>551</width>
- <height>23</height>
+ <height>25</height>
</rect>
</property>
<widget class="QMenu" name="menuCalls">
@@ -173,12 +173,6 @@ Otherwise, the standard format with 11 bit idenfier is used.</string>
<addaction name="separator"/>
<addaction name="actionQuit"/>
</widget>
- <widget class="QMenu" name="menuTools">
- <property name="title">
- <string>Too&amp;ls</string>
- </property>
- <addaction name="actionConfigure"/>
- </widget>
<widget class="QMenu" name="menuHelp">
<property name="title">
<string>Help</string>
@@ -186,7 +180,6 @@ Otherwise, the standard format with 11 bit idenfier is used.</string>
<addaction name="actionAboutQt"/>
</widget>
<addaction name="menuCalls"/>
- <addaction name="menuTools"/>
<addaction name="menuHelp"/>
</widget>
<widget class="QToolBar" name="mainToolBar">
@@ -198,7 +191,6 @@ Otherwise, the standard format with 11 bit idenfier is used.</string>
</attribute>
<addaction name="actionConnect"/>
<addaction name="actionDisconnect"/>
- <addaction name="actionConfigure"/>
</widget>
<widget class="QStatusBar" name="statusBar"/>
<action name="actionConnect">
@@ -228,15 +220,6 @@ Otherwise, the standard format with 11 bit idenfier is used.</string>
<string>&amp;Quit</string>
</property>
</action>
- <action name="actionConfigure">
- <property name="icon">
- <iconset resource="can.qrc">
- <normaloff>:/images/settings.png</normaloff>:/images/settings.png</iconset>
- </property>
- <property name="text">
- <string>&amp;Configure</string>
- </property>
- </action>
<action name="actionAboutQt">
<property name="text">
<string>&amp;About Qt</string>