summaryrefslogtreecommitdiff
path: root/src/plugins/serialterminal
diff options
context:
space:
mode:
authorOrgad Shaneh <orgad.shaneh@audiocodes.com>2018-11-15 11:58:05 +0200
committerOrgad Shaneh <orgads@gmail.com>2018-11-16 08:26:48 +0000
commit08b38cff4c3de3d8e7de23e9941d6fe6ed777127 (patch)
tree7f4f8b0299825a670e05a9fc9196f1cecc30b5dc /src/plugins/serialterminal
parentfc5caf3e0fff736acf1fc6c30e95b9b40089c03d (diff)
downloadqt-creator-08b38cff4c3de3d8e7de23e9941d6fe6ed777127.tar.gz
SerialTerminal: Save and restore selected port name
+ Populate serial ports on startup. Change-Id: Ie7216bb09ba1ffbb0036019cb4974a14119fc55f Reviewed-by: Benjamin Balga <balga.benjamin@gmail.com> Reviewed-by: Orgad Shaneh <orgads@gmail.com>
Diffstat (limited to 'src/plugins/serialterminal')
-rw-r--r--src/plugins/serialterminal/serialdevicemodel.cpp7
-rw-r--r--src/plugins/serialterminal/serialdevicemodel.h1
-rw-r--r--src/plugins/serialterminal/serialoutputpane.cpp11
-rw-r--r--src/plugins/serialterminal/serialoutputpane.h1
-rw-r--r--src/plugins/serialterminal/serialterminalsettings.cpp6
-rw-r--r--src/plugins/serialterminal/serialterminalsettings.h1
6 files changed, 26 insertions, 1 deletions
diff --git a/src/plugins/serialterminal/serialdevicemodel.cpp b/src/plugins/serialterminal/serialdevicemodel.cpp
index 8a6b10173f..4a830da154 100644
--- a/src/plugins/serialterminal/serialdevicemodel.cpp
+++ b/src/plugins/serialterminal/serialdevicemodel.cpp
@@ -79,6 +79,13 @@ void SerialDeviceModel::enablePort(const QString &portName)
m_disabledPorts.remove(portName);
}
+int SerialDeviceModel::indexForPort(const QString &portName) const
+{
+ return Utils::indexOf(m_ports, [portName](const QSerialPortInfo &port) {
+ return port.portName() == portName;
+ });
+}
+
void SerialDeviceModel::update()
{
// Called from the combobox before popup, thus updated only when needed and immediately
diff --git a/src/plugins/serialterminal/serialdevicemodel.h b/src/plugins/serialterminal/serialdevicemodel.h
index f459740cbd..a9f67f1938 100644
--- a/src/plugins/serialterminal/serialdevicemodel.h
+++ b/src/plugins/serialterminal/serialdevicemodel.h
@@ -46,6 +46,7 @@ public:
void disablePort(const QString &portName);
void enablePort(const QString &portName);
+ int indexForPort(const QString &portName) const;
void update();
diff --git a/src/plugins/serialterminal/serialoutputpane.cpp b/src/plugins/serialterminal/serialoutputpane.cpp
index bf2a709050..ad655f0f76 100644
--- a/src/plugins/serialterminal/serialoutputpane.cpp
+++ b/src/plugins/serialterminal/serialoutputpane.cpp
@@ -381,7 +381,8 @@ void SerialOutputPane::createToolButtons()
m_portsSelection = new ComboBox;
m_portsSelection->setSizeAdjustPolicy(QComboBox::AdjustToContents);
m_portsSelection->setModel(m_devicesModel);
- connect(m_portsSelection, &ComboBox::opened, m_devicesModel, &SerialDeviceModel::update);
+ updatePortsList();
+ connect(m_portsSelection, &ComboBox::opened, this, &SerialOutputPane::updatePortsList);
connect(m_portsSelection, static_cast<void (ComboBox::*)(int)>(&ComboBox::currentIndexChanged),
this, &SerialOutputPane::activePortNameChanged);
// TODO: the ports are not updated with the box opened (if the user wait for it) -> add a timer?
@@ -409,6 +410,12 @@ void SerialOutputPane::updateLineEndingsComboBox()
m_lineEndingsSelection->setCurrentIndex(m_settings.defaultLineEndingIndex);
}
+void SerialOutputPane::updatePortsList()
+{
+ m_devicesModel->update();
+ m_portsSelection->setCurrentIndex(m_devicesModel->indexForPort(m_settings.portName));
+}
+
int SerialOutputPane::indexOf(const SerialControl *rc) const
{
return Utils::indexOf(m_serialControlTabs, [rc](const SerialControlTab &tab) {
@@ -618,6 +625,8 @@ void SerialOutputPane::activePortNameChanged(int index)
// Update current port name
m_currentPortName = pn;
+ m_settings.setPortName(pn);
+ emit settingsChanged(m_settings);
}
void SerialOutputPane::activeBaudRateChanged(int index)
diff --git a/src/plugins/serialterminal/serialoutputpane.h b/src/plugins/serialterminal/serialoutputpane.h
index d7859652e9..5f011f9daa 100644
--- a/src/plugins/serialterminal/serialoutputpane.h
+++ b/src/plugins/serialterminal/serialoutputpane.h
@@ -114,6 +114,7 @@ private:
void createToolButtons();
void updateLineEndingsComboBox();
+ void updatePortsList();
void contextMenuRequested(const QPoint &pos, int index);
diff --git a/src/plugins/serialterminal/serialterminalsettings.cpp b/src/plugins/serialterminal/serialterminalsettings.cpp
index 7c66d01e2b..989ab51313 100644
--- a/src/plugins/serialterminal/serialterminalsettings.cpp
+++ b/src/plugins/serialterminal/serialterminalsettings.cpp
@@ -120,6 +120,12 @@ void Settings::setBaudRate(qint32 br)
edited = true;
}
+void Settings::setPortName(const QString &name)
+{
+ portName = name;
+ edited = true;
+}
+
QByteArray Settings::defaultLineEnding() const
{
return defaultLineEndingIndex >= (unsigned int)lineEndings.size()
diff --git a/src/plugins/serialterminal/serialterminalsettings.h b/src/plugins/serialterminal/serialterminalsettings.h
index 06a9cb0cec..93ebff78fa 100644
--- a/src/plugins/serialterminal/serialterminalsettings.h
+++ b/src/plugins/serialterminal/serialterminalsettings.h
@@ -62,6 +62,7 @@ public:
void load(QSettings *settings);
void setBaudRate(qint32 br);
+ void setPortName(const QString &name);
QByteArray defaultLineEnding() const;
QString defaultLineEndingText() const;