diff options
author | Orgad Shaneh <orgad.shaneh@audiocodes.com> | 2018-11-15 11:58:05 +0200 |
---|---|---|
committer | Orgad Shaneh <orgads@gmail.com> | 2018-11-16 08:26:48 +0000 |
commit | 08b38cff4c3de3d8e7de23e9941d6fe6ed777127 (patch) | |
tree | 7f4f8b0299825a670e05a9fc9196f1cecc30b5dc | |
parent | fc5caf3e0fff736acf1fc6c30e95b9b40089c03d (diff) | |
download | qt-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>
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; |