/** ****************************************************************************** * * @file UploaderGadgetoptionspage.cpp * @author The OpenPilot Team, http://www.openpilot.org Copyright (C) 2010. * @brief * @see The GNU Public License (GPL) Version 3 * @defgroup Uploader * @{ * *****************************************************************************/ /* * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, but * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License * for more details. * * You should have received a copy of the GNU General Public License along * with this program; if not, write to the Free Software Foundation, Inc., * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ #include "uploadergadgetoptionspage.h" #include "uploadergadgetconfiguration.h" #include #include #include #include #include #include #include #include #include #include UploaderGadgetOptionsPage::UploaderGadgetOptionsPage(UploaderGadgetConfiguration *config, QObject *parent) : IOptionsPage(parent), m_config(config) { #ifdef _TTY_POSIX_ BaudRateTypeString <<"BAUD50" //POSIX ONLY <<"BAUD75" //POSIX ONLY <<"BAUD110" <<"BAUD134" //POSIX ONLY <<"BAUD150" //POSIX ONLY <<"BAUD200" //POSIX ONLY <<"BAUD300" <<"BAUD600" <<"BAUD1200" <<"BAUD1800" //POSIX ONLY <<"BAUD2400" <<"BAUD4800" <<"BAUD9600" <<"BAUD19200" <<"BAUD38400" <<"BAUD57600" <<"BAUD76800" //POSIX ONLY <<"BAUD115200"; DataBitsTypeString <<"DATA_5" <<"DATA_6" <<"DATA_7" <<"DATA_8"; ParityTypeString <<"PAR_NONE" <<"PAR_ODD" <<"PAR_EVEN" <<"PAR_SPACE"; StopBitsTypeString <<"STOP_1" <<"STOP_2"; #else BaudRateTypeString <<"BAUD110" <<"BAUD300" <<"BAUD600" <<"BAUD1200" <<"BAUD2400" <<"BAUD4800" <<"BAUD9600" <<"BAUD14400" <<"BAUD19200" <<"BAUD38400" <<"BAUD56000" <<"BAUD57600" <<"BAUD115200" <<"BAUD128000" <<"BAUD256000"; DataBitsTypeString <<"DATA_5" <<"DATA_6" <<"DATA_7" <<"DATA_8"; ParityTypeString <<"PAR_NONE" <<"PAR_ODD" <<"PAR_EVEN" <<"PAR_MARK" //WINDOWS ONLY <<"PAR_SPACE"; StopBitsTypeString <<"STOP_1" <<"STOP_1_5" //WINDOWS ONLY <<"STOP_2"; #endif BaudRateTypeStringALL <<"BAUD50" //POSIX ONLY <<"BAUD75" //POSIX ONLY <<"BAUD110" <<"BAUD134" //POSIX ONLY <<"BAUD150" //POSIX ONLY <<"BAUD200" //POSIX ONLY <<"BAUD300" <<"BAUD600" <<"BAUD1200" <<"BAUD1800" //POSIX ONLY <<"BAUD2400" <<"BAUD4800" <<"BAUD9600" <<"BAUD14400" <<"BAUD19200" <<"BAUD38400" <<"BAUD56000" <<"BAUD57600" <<"BAUD76800" //POSIX ONLY <<"BAUD115200" <<"BAUD128000" <<"BAUD256000"; DataBitsTypeStringALL <<"DATA_5" <<"DATA_6" <<"DATA_7" <<"DATA_8"; ParityTypeStringALL <<"PAR_NONE" <<"PAR_ODD" <<"PAR_EVEN" <<"PAR_MARK" //WINDOWS ONLY <<"PAR_SPACE"; StopBitsTypeStringALL <<"STOP_1" <<"STOP_1_5" //WINDOWS ONLY <<"STOP_2"; FlowTypeString <<"FLOW_OFF" <<"FLOW_HARDWARE" <<"FLOW_XONXOFF"; } QWidget *UploaderGadgetOptionsPage::createPage(QWidget *parent) { QWidget *widget = new QWidget; //main layout QVBoxLayout *vl = new QVBoxLayout(); widget->setLayout(vl); //port layout QHBoxLayout *portLayout = new QHBoxLayout(); QWidget *x = new QWidget; x->setLayout(portLayout); QWidget *label = new QLabel("Port:"); m_portCB = new QComboBox(parent); portLayout->addWidget(label); portLayout->addWidget(m_portCB); //port speed layout QHBoxLayout *speedLayout = new QHBoxLayout(); QWidget *y = new QWidget; y->setLayout(speedLayout); label = new QLabel("Port Speed:"); m_speedCB = new QComboBox(); speedLayout->addWidget(label); speedLayout->addWidget(m_speedCB); //flow control layout QHBoxLayout *flowLayout = new QHBoxLayout(); QWidget *z = new QWidget; z->setLayout(flowLayout); label = new QLabel("Flow Control:"); m_flowCB = new QComboBox(); flowLayout->addWidget(label); flowLayout->addWidget(m_flowCB); //databits layout QHBoxLayout *databitsLayout = new QHBoxLayout(); QWidget *a = new QWidget; a->setLayout(databitsLayout); label = new QLabel("Data Bits:"); m_databitsCB = new QComboBox(); databitsLayout->addWidget(label); databitsLayout->addWidget(m_databitsCB); //stopbits layout QHBoxLayout *stopbitsLayout = new QHBoxLayout(); QWidget *b = new QWidget; b->setLayout(stopbitsLayout); label = new QLabel("Stop Bits:"); m_stopbitsCB = new QComboBox(); stopbitsLayout->addWidget(label); stopbitsLayout->addWidget(m_stopbitsCB); //parity layout QHBoxLayout *parityLayout = new QHBoxLayout(); QWidget *c = new QWidget; c->setLayout(parityLayout); label = new QLabel("Parity:"); m_parityCB = new QComboBox(); parityLayout->addWidget(label); parityLayout->addWidget(m_parityCB); //timeout layout QHBoxLayout *timeoutLayout = new QHBoxLayout(); QWidget *d = new QWidget; d->setLayout(timeoutLayout); label = new QLabel("TimeOut(ms):"); m_timeoutSpin = new QSpinBox(); m_timeoutSpin->setMaximum(100000); timeoutLayout->addWidget(label); timeoutLayout->addWidget(m_timeoutSpin); QSpacerItem *spacer = new QSpacerItem(100, 100, QSizePolicy::Expanding, QSizePolicy::Expanding); vl->addWidget(x); vl->addWidget(y); vl->addWidget(z); vl->addWidget(a); vl->addWidget(b); vl->addWidget(c); vl->addWidget(d); vl->addSpacerItem(spacer); m_portCB->clear(); m_speedCB->clear(); m_databitsCB->clear(); m_flowCB->clear(); m_parityCB->clear(); m_stopbitsCB->clear(); QList ports =QextSerialEnumerator ::getPorts(); qSort(ports.begin(), ports.end()); for (int i = 0; i < ports.size(); i++) { m_portCB->addItem((QString)ports.at(i).portName.toLocal8Bit().constData()); } if(m_portCB->findText(m_config->Port())!=-1){ m_portCB->setCurrentIndex(m_portCB->findText(m_config->Port())); } for (int i=0;iaddItem(BaudRateTypeString.at(i).toLocal8Bit().constData() ); } if(m_speedCB->findText(BaudRateTypeStringALL.at((int)m_config->Speed()).toLocal8Bit().constData())!=-1){ m_speedCB->setCurrentIndex(m_speedCB->findText(BaudRateTypeStringALL.at((int)m_config->Speed()).toLocal8Bit().constData())); } for (int i=0;iaddItem(DataBitsTypeString.at(i).toLocal8Bit().constData() ); } if(m_databitsCB->findText(DataBitsTypeStringALL.at((int)m_config->DataBits()).toLocal8Bit().constData())!=-1){ m_databitsCB->setCurrentIndex(m_databitsCB->findText(DataBitsTypeStringALL.at((int)m_config->DataBits()).toLocal8Bit().constData())); } for (int i=0;iaddItem(ParityTypeString.at(i).toLocal8Bit().constData() ); } if(m_parityCB->findText(ParityTypeStringALL.at((int)m_config->Parity()).toLocal8Bit().constData())!=-1){ m_parityCB->setCurrentIndex(m_parityCB->findText(ParityTypeStringALL.at((int)m_config->Parity()).toLocal8Bit().constData())); } for (int i=0;iaddItem(StopBitsTypeString.at(i).toLocal8Bit().constData() ); } if(m_stopbitsCB->findText(StopBitsTypeStringALL.at((int)m_config->StopBits()).toLocal8Bit().constData())!=-1){ m_stopbitsCB->setCurrentIndex(m_stopbitsCB->findText(StopBitsTypeStringALL.at((int)m_config->StopBits()).toLocal8Bit().constData())); } for (int i=0;iaddItem(FlowTypeString.at(i).toLocal8Bit().constData() ); } if(m_flowCB->findText(FlowTypeString.at((int)m_config->Flow()).toLocal8Bit().constData())!=-1){ m_flowCB->setCurrentIndex(m_flowCB->findText(FlowTypeString.at((int)m_config->Flow()).toLocal8Bit().constData())); } m_timeoutSpin->setValue(m_config->TimeOut()); return widget; } /** * Called when the user presses apply or OK. * * Saves the current values * */ void UploaderGadgetOptionsPage::apply() { m_config->setPort(m_portCB->currentText()); m_config->setSpeed((BaudRateType)BaudRateTypeStringALL.indexOf(m_speedCB->currentText())); m_config->setDataBits((DataBitsType)DataBitsTypeStringALL.indexOf(m_databitsCB->currentText())); m_config->setStopBits((StopBitsType)StopBitsTypeStringALL.indexOf(m_stopbitsCB->currentText())); m_config->setParity((ParityType)ParityTypeStringALL.indexOf(m_parityCB->currentText())); m_config->setFlow((FlowType)FlowTypeString.indexOf(m_flowCB->currentText())); m_config->setTimeOut( m_timeoutSpin->value()); } void UploaderGadgetOptionsPage::finish() { }