1
0
mirror of https://bitbucket.org/librepilot/librepilot.git synced 2025-02-20 10:54:14 +01:00

LP-525 Fixed USB function handling - not allowing USBTelemetry on both, but requiring at least one. Adjusted common option combobox sizes.

This commit is contained in:
Vladimir Zidar 2017-10-26 01:35:54 +02:00
parent 4bd3df43aa
commit 8b61e7b27f
3 changed files with 140 additions and 55 deletions

View File

@ -33,20 +33,22 @@
#include "uavobjectmanager.h" #include "uavobjectmanager.h"
CommonHWSettingsWidget::CommonHWSettingsWidget(QWidget *parent) : QWidget(parent) CommonHWSettingsWidget::CommonHWSettingsWidget(QWidget *parent) : ConfigTaskWidget(parent, Child)
{ {
m_ui = new Ui_CommonHWSettingsWidget(); m_ui = new Ui_CommonHWSettingsWidget();
m_ui->setupUi(this); m_ui->setupUi(this);
m_ui->cbDSMxBind->addItem(tr("Disabled"), 0); m_ui->cbDSMxBind->addItem(tr("Disabled"), 0);
// combo->addItem(options.at(optionIndex), QVariant(optionIndex));
setFeatures(0); setFeatures(0);
// Relay signals from private members // Relay signals from private members
connect(m_ui->cbUSBHID, SIGNAL(currentIndexChanged(int)), this, SIGNAL(USBHIDFunctionChanged(int))); connect(m_ui->cbUSBHID, SIGNAL(currentIndexChanged(int)), this, SIGNAL(USBHIDFunctionChanged(int)));
connect(m_ui->cbUSBVCP, SIGNAL(currentIndexChanged(int)), this, SIGNAL(USBVCPFunctionChanged(int))); connect(m_ui->cbUSBVCP, SIGNAL(currentIndexChanged(int)), this, SIGNAL(USBVCPFunctionChanged(int)));
// And these are here to handle conflicting VCP & HID options (such as USBTelemetry).
connect(m_ui->cbUSBHID, SIGNAL(currentIndexChanged(int)), this, SLOT(USBHIDComboChanged(int)));
connect(m_ui->cbUSBVCP, SIGNAL(currentIndexChanged(int)), this, SLOT(USBVCPComboChanged(int)));
} }
CommonHWSettingsWidget::~CommonHWSettingsWidget() CommonHWSettingsWidget::~CommonHWSettingsWidget()
@ -73,9 +75,7 @@ void CommonHWSettingsWidget::refreshWidgetsValues(UAVObject *obj)
{ {
Q_UNUSED(obj); Q_UNUSED(obj);
UAVObjectManager *objMngr = ExtensionSystem::PluginManager::instance()->getObject<UAVObjectManager>(); int option = HwSettings::GetInstance(getObjectManager())->getDSMxBind();
int option = HwSettings::GetInstance(objMngr)->getDSMxBind();
if (m_ui->cbDSMxBind->count() == 0) { if (m_ui->cbDSMxBind->count() == 0) {
m_ui->cbDSMxBind->addItem(tr("None"), 0); m_ui->cbDSMxBind->addItem(tr("None"), 0);
@ -141,3 +141,31 @@ QComboBox *CommonHWSettingsWidget::USBVCPComboBox()
{ {
return m_ui->cbUSBVCP; return m_ui->cbUSBVCP;
} }
bool CommonHWSettingsWidget::USBFunctionConflict()
{
return (getComboboxSelectedOption(m_ui->cbUSBHID) == HwSettings::USB_HIDPORT_USBTELEMETRY)
&& (getComboboxSelectedOption(m_ui->cbUSBVCP) == HwSettings::USB_VCPPORT_USBTELEMETRY);
}
void CommonHWSettingsWidget::USBHIDComboChanged(int index)
{
Q_UNUSED(index);
if (USBFunctionConflict()) {
setComboboxSelectedOption(m_ui->cbUSBVCP, HwSettings::USB_VCPPORT_DISABLED);
} else if (getComboboxSelectedOption(m_ui->cbUSBHID) != HwSettings::USB_HIDPORT_USBTELEMETRY) {
setComboboxSelectedOption(m_ui->cbUSBVCP, HwSettings::USB_VCPPORT_USBTELEMETRY);
}
}
void CommonHWSettingsWidget::USBVCPComboChanged(int index)
{
Q_UNUSED(index);
if (USBFunctionConflict()) {
setComboboxSelectedOption(m_ui->cbUSBHID, HwSettings::USB_HIDPORT_DISABLED);
} else if (getComboboxSelectedOption(m_ui->cbUSBVCP) != HwSettings::USB_VCPPORT_USBTELEMETRY) {
setComboboxSelectedOption(m_ui->cbUSBHID, HwSettings::USB_HIDPORT_USBTELEMETRY);
}
}

View File

@ -31,7 +31,7 @@
class Ui_CommonHWSettingsWidget; class Ui_CommonHWSettingsWidget;
class CommonHWSettingsWidget : public QWidget { class CommonHWSettingsWidget : public ConfigTaskWidget {
Q_OBJECT Q_OBJECT
public: public:
@ -56,8 +56,14 @@ signals:
void USBHIDFunctionChanged(int index); void USBHIDFunctionChanged(int index);
void USBVCPFunctionChanged(int index); void USBVCPFunctionChanged(int index);
private slots:
void USBHIDComboChanged(int index);
void USBVCPComboChanged(int index);
private: private:
Ui_CommonHWSettingsWidget *m_ui; Ui_CommonHWSettingsWidget *m_ui;
bool USBFunctionConflict();
}; };
#endif // COMMONHWSETTINGSWIDGET_H #endif // COMMONHWSETTINGSWIDGET_H

View File

@ -6,8 +6,8 @@
<rect> <rect>
<x>0</x> <x>0</x>
<y>0</y> <y>0</y>
<width>604</width> <width>746</width>
<height>189</height> <height>200</height>
</rect> </rect>
</property> </property>
<layout class="QGridLayout" name="gridLayout_10"> <layout class="QGridLayout" name="gridLayout_10">
@ -24,50 +24,7 @@
</property> </property>
</spacer> </spacer>
</item> </item>
<item row="4" column="6"> <item row="2" column="3" rowspan="5" colspan="2">
<spacer name="horizontalSpacer_11">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>40</width>
<height>20</height>
</size>
</property>
</spacer>
</item>
<item row="4" column="3">
<spacer name="horizontalSpacer_9">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>40</width>
<height>20</height>
</size>
</property>
</spacer>
</item>
<item row="1" column="1" colspan="5">
<widget class="Line" name="line">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
</widget>
</item>
<item row="0" column="1" colspan="5">
<widget class="QLabel" name="label">
<property name="text">
<string>Options</string>
</property>
<property name="alignment">
<set>Qt::AlignCenter</set>
</property>
</widget>
</item>
<item row="2" column="4" rowspan="5" colspan="2">
<layout class="QGridLayout" name="gridLayout_2"> <layout class="QGridLayout" name="gridLayout_2">
<property name="verticalSpacing"> <property name="verticalSpacing">
<number>-1</number> <number>-1</number>
@ -105,7 +62,7 @@
</property> </property>
</widget> </widget>
</item> </item>
<item row="8" column="0" colspan="2"> <item row="9" column="0" colspan="2">
<spacer name="verticalSpacer_2"> <spacer name="verticalSpacer_2">
<property name="orientation"> <property name="orientation">
<enum>Qt::Vertical</enum> <enum>Qt::Vertical</enum>
@ -183,6 +140,38 @@
</property> </property>
</widget> </widget>
</item> </item>
<item row="8" column="0">
<spacer name="horizontalSpacer_3">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="sizeType">
<enum>QSizePolicy::Minimum</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>150</width>
<height>1</height>
</size>
</property>
</spacer>
</item>
<item row="8" column="1">
<spacer name="horizontalSpacer_4">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="sizeType">
<enum>QSizePolicy::Minimum</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>180</width>
<height>1</height>
</size>
</property>
</spacer>
</item>
</layout> </layout>
</item> </item>
<item row="2" column="1" rowspan="5" colspan="2"> <item row="2" column="1" rowspan="5" colspan="2">
@ -282,7 +271,7 @@
</property> </property>
</widget> </widget>
</item> </item>
<item row="4" column="0" colspan="2"> <item row="5" column="0" colspan="2">
<spacer name="verticalSpacer"> <spacer name="verticalSpacer">
<property name="orientation"> <property name="orientation">
<enum>Qt::Vertical</enum> <enum>Qt::Vertical</enum>
@ -298,8 +287,70 @@
</property> </property>
</spacer> </spacer>
</item> </item>
<item row="4" column="0">
<spacer name="horizontalSpacer">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="sizeType">
<enum>QSizePolicy::Minimum</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>150</width>
<height>1</height>
</size>
</property>
</spacer>
</item>
<item row="4" column="1">
<spacer name="horizontalSpacer_2">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="sizeType">
<enum>QSizePolicy::Minimum</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>180</width>
<height>1</height>
</size>
</property>
</spacer>
</item>
</layout> </layout>
</item> </item>
<item row="4" column="5">
<spacer name="horizontalSpacer_11">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>40</width>
<height>20</height>
</size>
</property>
</spacer>
</item>
<item row="1" column="1" colspan="4">
<widget class="Line" name="line">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
</widget>
</item>
<item row="0" column="1" colspan="4">
<widget class="QLabel" name="label">
<property name="text">
<string>Options</string>
</property>
<property name="alignment">
<set>Qt::AlignCenter</set>
</property>
</widget>
</item>
</layout> </layout>
</widget> </widget>
<resources/> <resources/>