1
0
mirror of https://bitbucket.org/librepilot/librepilot.git synced 2025-01-29 14:52:12 +01:00

OP-857 OP-860 minor improvments to the connection widget

- made it wider so it can at least display the string "USB: CopterControl"
- added a tooltip to the connection combo box that will display the
  currently selected connection
  - other minor code cleanups
This commit is contained in:
Philippe Renon 2013-03-12 22:36:35 +01:00
parent 9b495b4d5e
commit ef72e13a18
2 changed files with 56 additions and 38 deletions

View File

@ -41,7 +41,6 @@
namespace Core {
ConnectionManager::ConnectionManager(Internal::MainWindow *mainWindow, QTabWidget *modeStack) :
QWidget(mainWindow),
m_availableDevList(0),
@ -50,36 +49,41 @@ ConnectionManager::ConnectionManager(Internal::MainWindow *mainWindow, QTabWidge
polling(true),
m_mainWindow(mainWindow)
{
QHBoxLayout *layout = new QHBoxLayout;
layout->setSpacing(5);
layout->setContentsMargins(5,2,5,2);
// monitor widget
m_monitorWidget = new TelemetryMonitorWidget(this);
layout->addWidget(m_monitorWidget, Qt::AlignHCenter);
layout->addWidget(new QLabel(tr("Connections:")));
// device list
m_availableDevList = new QComboBox;
m_availableDevList->setMinimumWidth(100);
m_availableDevList->setMaximumWidth(150);
m_availableDevList->setMinimumWidth(120);
m_availableDevList->setMaximumWidth(180);
m_availableDevList->setContextMenuPolicy(Qt::CustomContextMenu);
layout->addWidget(m_availableDevList);
// connect button
m_connectBtn = new QPushButton(tr("Connect"));
m_connectBtn->setEnabled(false);
layout->addWidget(m_connectBtn);
// put everything together
QHBoxLayout *layout = new QHBoxLayout;
layout->setSpacing(5);
layout->setContentsMargins(5, 2, 5, 2);
layout->addWidget(m_monitorWidget, 0, Qt::AlignVCenter);
layout->addWidget(new QLabel(tr("Connections:")), 0, Qt::AlignVCenter);
layout->addWidget(m_availableDevList, 0, Qt::AlignVCenter);
layout->addWidget(m_connectBtn, 0, Qt::AlignVCenter);
setLayout(layout);
modeStack->setCornerWidget(this, Qt::TopRightCorner);
QObject::connect(m_connectBtn, SIGNAL(clicked()), this, SLOT(onConnectClicked()));
QObject::connect(m_availableDevList, SIGNAL(currentIndexChanged(int)), this, SLOT(onDeviceSelectionChanged(int)));
// setup our reconnect timers
reconnect = new QTimer(this);
reconnectCheck = new QTimer(this);
connect(reconnect,SIGNAL(timeout()),this,SLOT(reconnectSlot()));
connect(reconnectCheck,SIGNAL(timeout()),this,SLOT(reconnectCheckSlot()));
connect(reconnect, SIGNAL(timeout()), this, SLOT(reconnectSlot()));
connect(reconnectCheck, SIGNAL(timeout()), this, SLOT(reconnectCheckSlot()));
}
ConnectionManager::~ConnectionManager()
@ -103,7 +107,8 @@ void ConnectionManager::init()
*/
bool ConnectionManager::connectDevice(DevListItem device)
{
DevListItem connection_device = findDevice(m_availableDevList->itemData(m_availableDevList->currentIndex(),Qt::ToolTipRole).toString());
QString deviceName = m_availableDevList->itemData(m_availableDevList->currentIndex(), Qt::ToolTipRole).toString();
DevListItem connection_device = findDevice(deviceName);
if (!connection_device.connection)
return false;
@ -224,21 +229,33 @@ void ConnectionManager::onConnectionDestroyed(QObject *obj)
disconnectDevice();
}
/**
* Slot called when the user selects a device from the combo box
*/
void ConnectionManager::onDeviceSelectionChanged(int index)
{
if (index >= 0) {
QString deviceName = m_availableDevList->itemData(index, Qt::ToolTipRole).toString();
m_availableDevList->setToolTip(deviceName);
}
}
/**
* Slot called when the user clicks the connect/disconnect button
*/
void ConnectionManager::onConnectClicked()
{
// Check if we have a ioDev already created:
if (!m_ioDev)
{
if (!m_ioDev) {
// connecting to currently selected device
DevListItem device = findDevice(m_availableDevList->itemData(m_availableDevList->currentIndex(), Qt::ToolTipRole).toString());
if (device.connection)
QString deviceName = m_availableDevList->itemData(m_availableDevList->currentIndex(), Qt::ToolTipRole).toString();
DevListItem device = findDevice(deviceName);
if (device.connection) {
connectDevice(device);
}
}
else
{ // disconnecting
else {
// disconnecting
disconnectDevice();
}
}
@ -444,32 +461,32 @@ void ConnectionManager::devChanged(IConnection *connection)
void ConnectionManager::updateConnectionDropdown()
{
//add all the list again to the combobox
foreach (DevListItem d, m_devList)
{
// add all the list again to the combobox
foreach (DevListItem d, m_devList) {
m_availableDevList->addItem(d.getConName());
m_availableDevList->setItemData(m_availableDevList->count()-1, d.getConName(), Qt::ToolTipRole);
if(!m_ioDev && d.getConName().startsWith("USB"))
{
if(m_mainWindow->generalSettings()->autoConnect() || m_mainWindow->generalSettings()->autoSelect())
m_availableDevList->setItemData(m_availableDevList->count() - 1, d.getConName(), Qt::ToolTipRole);
if (!m_ioDev && d.getConName().startsWith("USB")) {
if (m_mainWindow->generalSettings()->autoConnect() || m_mainWindow->generalSettings()->autoSelect()) {
m_availableDevList->setCurrentIndex(m_availableDevList->count() - 1);
if(m_mainWindow->generalSettings()->autoConnect() && polling)
{
}
if (m_mainWindow->generalSettings()->autoConnect() && polling) {
qDebug() << "Automatically opening device";
connectDevice(d);
qDebug()<<"ConnectionManager::devChanged autoconnected USB device";
qDebug() << "ConnectionManager::updateConnectionDropdown autoconnected USB device";
}
}
}
if(m_ioDev)//if a device is connected make it the one selected on the dropbox
{
for(int x=0;x<m_availableDevList->count();++x)
{
if(m_connectionDevice.getConName()==m_availableDevList->itemData(x,Qt::ToolTipRole).toString())
m_availableDevList->setCurrentIndex(x);
if (m_ioDev) {
// if a device is connected make it the one selected on the dropbox
for (int i = 0; i < m_availableDevList->count(); i++) {
QString deviceName = m_availableDevList->itemData(i, Qt::ToolTipRole).toString();
if (m_connectionDevice.getConName() == deviceName) {
m_availableDevList->setCurrentIndex(i);
}
}
}
// update combo box tooltip
onDeviceSelectionChanged(m_availableDevList->currentIndex());
}
void Core::ConnectionManager::connectionsCallBack()

View File

@ -125,6 +125,7 @@ private slots:
void aboutToRemoveObject(QObject *obj);
void onConnectClicked();
void onDeviceSelectionChanged(int index);
void devChanged(IConnection *connection);
void onConnectionDestroyed(QObject *obj);