From 179ee222650d2cda67ae91aee7640b52c64e619c Mon Sep 17 00:00:00 2001 From: Ming Rui Zhang <mingrui.zhang@savoirfairelinux.com> Date: Tue, 13 Aug 2019 12:45:25 -0400 Subject: [PATCH] advancedSISettings: add SDP session negotiation sector to control SDP port range Change-Id: Iaa9c70e9d71aa6de2eb6fe849e5fac59db3fa8e1 --- advancedsipsettingwidget.cpp | 60 +++++++++ advancedsipsettingwidget.h | 6 + advancedsipsettingwidget.ui | 230 ++++++++++++++++++++++++++++++++++- 3 files changed, 294 insertions(+), 2 deletions(-) diff --git a/advancedsipsettingwidget.cpp b/advancedsipsettingwidget.cpp index 42d69e5..bdc1305 100644 --- a/advancedsipsettingwidget.cpp +++ b/advancedsipsettingwidget.cpp @@ -221,6 +221,18 @@ void AdvancedSIPSettingsWidget::updateAdvancedSIPSettings() ui->btnRingtoneSIP->setEnabled(config.Ringtone.ringtoneEnabled); ui->btnRingtoneSIP->setText(QFileInfo(QString::fromStdString(config.Ringtone.ringtonePath)).fileName()); ui->lineEditSTUNAddressSIP->setEnabled(config.STUN.enable); + + // SDP session negotiation ports + ui->audioRTPMinPortSpinBox->setValue(config.Audio.audioPortMin); + ui->audioRTPMaxPortSpinBox->setValue(config.Audio.audioPortMax); + ui->videoRTPMinPortSpinBox->setValue(config.Video.videoPortMin); + ui->videoRTPMaxPortSpinBox->setValue(config.Video.videoPortMax); + + connect(ui->audioRTPMinPortSpinBox, &QSpinBox::editingFinished, this, &AdvancedSIPSettingsWidget::audioRTPMinPortSpinBoxEditFinished); + connect(ui->audioRTPMaxPortSpinBox, &QSpinBox::editingFinished, this, &AdvancedSIPSettingsWidget::audioRTPMaxPortSpinBoxEditFinished); + connect(ui->videoRTPMinPortSpinBox, &QSpinBox::editingFinished, this, &AdvancedSIPSettingsWidget::videoRTPMinPortSpinBoxEditFinished); + connect(ui->videoRTPMaxPortSpinBox, &QSpinBox::editingFinished, this, &AdvancedSIPSettingsWidget::videoRTPMaxPortSpinBoxEditFinished); + } // call settings @@ -617,3 +629,51 @@ AdvancedSIPSettingsWidget::customPortSIPSpinBoxValueChanged(const int& value) confProps.publishedPort = value; LRCInstance::accountModel().setAccountConfig(LRCInstance::getCurrAccId(), confProps); } + +void +AdvancedSIPSettingsWidget::audioRTPMinPortSpinBoxEditFinished() +{ + auto confProps = LRCInstance::accountModel().getAccountConfig(LRCInstance::getCurrAccId()); + if (confProps.Audio.audioPortMax < ui->audioRTPMinPortSpinBox->value()) { + ui->audioRTPMinPortSpinBox->setValue(confProps.Audio.audioPortMin); + return; + } + confProps.Audio.audioPortMin = ui->audioRTPMinPortSpinBox->value(); + LRCInstance::accountModel().setAccountConfig(LRCInstance::getCurrAccId(), confProps); +} + +void +AdvancedSIPSettingsWidget::audioRTPMaxPortSpinBoxEditFinished() +{ + auto confProps = LRCInstance::accountModel().getAccountConfig(LRCInstance::getCurrAccId()); + if (ui->audioRTPMaxPortSpinBox->value() < confProps.Audio.audioPortMin) { + ui->audioRTPMaxPortSpinBox->setValue(confProps.Audio.audioPortMax); + return; + } + confProps.Audio.audioPortMax = ui->audioRTPMaxPortSpinBox->value(); + LRCInstance::accountModel().setAccountConfig(LRCInstance::getCurrAccId(), confProps); +} + +void +AdvancedSIPSettingsWidget::videoRTPMinPortSpinBoxEditFinished() +{ + auto confProps = LRCInstance::accountModel().getAccountConfig(LRCInstance::getCurrAccId()); + if (confProps.Video.videoPortMax < ui->videoRTPMinPortSpinBox->value()) { + ui->videoRTPMinPortSpinBox->setValue(confProps.Video.videoPortMin); + return; + } + confProps.Video.videoPortMin = ui->videoRTPMinPortSpinBox->value(); + LRCInstance::accountModel().setAccountConfig(LRCInstance::getCurrAccId(), confProps); +} + +void +AdvancedSIPSettingsWidget::videoRTPMaxPortSpinBoxEditFinished() +{ + auto confProps = LRCInstance::accountModel().getAccountConfig(LRCInstance::getCurrAccId()); + if (ui->videoRTPMaxPortSpinBox->value() < confProps.Video.videoPortMin) { + ui->videoRTPMaxPortSpinBox->setValue(confProps.Video.videoPortMax); + return; + } + confProps.Video.videoPortMax = ui->videoRTPMaxPortSpinBox->value(); + LRCInstance::accountModel().setAccountConfig(LRCInstance::getCurrAccId(), confProps); +} diff --git a/advancedsipsettingwidget.h b/advancedsipsettingwidget.h index 7d05704..1d8f5e3 100644 --- a/advancedsipsettingwidget.h +++ b/advancedsipsettingwidget.h @@ -105,4 +105,10 @@ private slots: void increaseVideoCodecPriority(); void setVideoState(int state); + + // SDP session negotiation ports + void audioRTPMinPortSpinBoxEditFinished(); + void audioRTPMaxPortSpinBoxEditFinished(); + void videoRTPMinPortSpinBoxEditFinished(); + void videoRTPMaxPortSpinBoxEditFinished(); }; diff --git a/advancedsipsettingwidget.ui b/advancedsipsettingwidget.ui index eb51766..db2c2eb 100644 --- a/advancedsipsettingwidget.ui +++ b/advancedsipsettingwidget.ui @@ -7,7 +7,7 @@ <x>0</x> <y>0</y> <width>731</width> - <height>1532</height> + <height>1775</height> </rect> </property> <property name="windowTitle"> @@ -1231,7 +1231,7 @@ </font> </property> <property name="maximum"> - <number>65536</number> + <number>65535</number> </property> </widget> </item> @@ -1704,6 +1704,232 @@ </item> </layout> </item> + <item> + <spacer name="verticalSpacer_12"> + <property name="orientation"> + <enum>Qt::Vertical</enum> + </property> + <property name="sizeType"> + <enum>QSizePolicy::Fixed</enum> + </property> + <property name="sizeHint" stdset="0"> + <size> + <width>20</width> + <height>20</height> + </size> + </property> + </spacer> + </item> + <item> + <layout class="QVBoxLayout" name="verticalLayout_8"> + <property name="topMargin"> + <number>0</number> + </property> + <item> + <widget class="QLabel" name="label_5"> + <property name="font"> + <font> + <pointsize>13</pointsize> + </font> + </property> + <property name="text"> + <string>SDP Session Negotiation (ICE Fallback)</string> + </property> + </widget> + </item> + <item> + <widget class="QLabel" name="label_16"> + <property name="font"> + <font> + <pointsize>10</pointsize> + </font> + </property> + <property name="text"> + <string>Only used during SDP negotiation in case ICE is not supported</string> + </property> + </widget> + </item> + <item> + <spacer name="verticalSpacer_11"> + <property name="orientation"> + <enum>Qt::Vertical</enum> + </property> + <property name="sizeType"> + <enum>QSizePolicy::Fixed</enum> + </property> + <property name="sizeHint" stdset="0"> + <size> + <width>20</width> + <height>10</height> + </size> + </property> + </spacer> + </item> + <item> + <layout class="QVBoxLayout" name="verticalLayout_18"> + <property name="leftMargin"> + <number>20</number> + </property> + <property name="topMargin"> + <number>0</number> + </property> + <item> + <layout class="QGridLayout" name="gridLayout_4"> + <property name="leftMargin"> + <number>0</number> + </property> + <item row="1" column="0"> + <layout class="QHBoxLayout" name="horizontalLayout_30"> + <item> + <widget class="QLabel" name="label_26"> + <property name="font"> + <font> + <pointsize>10</pointsize> + </font> + </property> + <property name="text"> + <string>Audio RTP Max Port</string> + </property> + </widget> + </item> + </layout> + </item> + <item row="3" column="0"> + <layout class="QHBoxLayout" name="horizontalLayout_21"> + <item> + <widget class="QLabel" name="label_15"> + <property name="font"> + <font> + <pointsize>10</pointsize> + </font> + </property> + <property name="text"> + <string>Video RTP Max Port</string> + </property> + </widget> + </item> + </layout> + </item> + <item row="1" column="2"> + <widget class="QSpinBox" name="audioRTPMaxPortSpinBox"> + <property name="font"> + <font> + <pointsize>10</pointsize> + </font> + </property> + <property name="maximum"> + <number>65535</number> + </property> + </widget> + </item> + <item row="0" column="2"> + <widget class="QSpinBox" name="audioRTPMinPortSpinBox"> + <property name="minimumSize"> + <size> + <width>300</width> + <height>0</height> + </size> + </property> + <property name="font"> + <font> + <pointsize>10</pointsize> + </font> + </property> + <property name="maximum"> + <number>65535</number> + </property> + </widget> + </item> + <item row="2" column="2"> + <widget class="QSpinBox" name="videoRTPMinPortSpinBox"> + <property name="font"> + <font> + <pointsize>10</pointsize> + </font> + </property> + <property name="maximum"> + <number>65535</number> + </property> + </widget> + </item> + <item row="2" column="0"> + <layout class="QHBoxLayout" name="horizontalLayout_19"> + <item> + <widget class="QLabel" name="label_13"> + <property name="font"> + <font> + <pointsize>10</pointsize> + </font> + </property> + <property name="text"> + <string>Video RTP Min Port</string> + </property> + </widget> + </item> + </layout> + </item> + <item row="0" column="0"> + <layout class="QHBoxLayout" name="horizontalLayout_32"> + <item> + <widget class="QLabel" name="label_29"> + <property name="sizePolicy"> + <sizepolicy hsizetype="Fixed" vsizetype="Preferred"> + <horstretch>0</horstretch> + <verstretch>0</verstretch> + </sizepolicy> + </property> + <property name="minimumSize"> + <size> + <width>150</width> + <height>0</height> + </size> + </property> + <property name="font"> + <font> + <pointsize>10</pointsize> + </font> + </property> + <property name="text"> + <string>Audio RTP Min Port</string> + </property> + </widget> + </item> + </layout> + </item> + <item row="3" column="2"> + <widget class="QSpinBox" name="videoRTPMaxPortSpinBox"> + <property name="font"> + <font> + <pointsize>10</pointsize> + </font> + </property> + <property name="maximum"> + <number>65535</number> + </property> + </widget> + </item> + <item row="0" column="1"> + <spacer name="horizontalSpacer_8"> + <property name="orientation"> + <enum>Qt::Horizontal</enum> + </property> + <property name="sizeType"> + <enum>QSizePolicy::MinimumExpanding</enum> + </property> + <property name="sizeHint" stdset="0"> + <size> + <width>40</width> + <height>20</height> + </size> + </property> + </spacer> + </item> + </layout> + </item> + </layout> + </item> + </layout> + </item> <item> <spacer name="verticalSpacer_3"> <property name="orientation"> -- GitLab