355 lines
10 KiB
C++
355 lines
10 KiB
C++
#include "LinkUI.h"
|
|
#include "ui_LinkUI.h"
|
|
|
|
LinkUI::LinkUI(QWidget *parent) :
|
|
QWidget(parent),
|
|
ui(new Ui::LinkUI)
|
|
{
|
|
ui->setupUi(this);
|
|
|
|
//load qss
|
|
QFile file(":/qss/LinkUI.qss");
|
|
file.open(QFile::ReadOnly);
|
|
QTextStream filetext(&file);
|
|
QString stylesheet = filetext.readAll();
|
|
this->setStyleSheet(stylesheet);
|
|
file.close();
|
|
|
|
|
|
//读取接口列表
|
|
InterfaceList.append(tr("SerialPort"));
|
|
InterfaceList.append(tr("Multicast"));
|
|
InterfaceList.append(tr("Unicast"));
|
|
|
|
//读取设备列表
|
|
DeviceList.append(tr("DataLink"));
|
|
DeviceList.append(tr("RTK"));
|
|
DeviceList.append(tr("Emergecy"));
|
|
DeviceList.append(tr("Remote"));
|
|
|
|
|
|
|
|
InterfaceMap.insert("SerialPort",tr("SerialPort"));
|
|
InterfaceMap.insert("Multicast",tr("Multicast"));
|
|
InterfaceMap.insert("Unicast",tr("Unicast"));
|
|
|
|
DeviceMap.insert("DataLink",tr("DataLink"));
|
|
DeviceMap.insert("RTK",tr("RTK"));
|
|
DeviceMap.insert("Emergecy",tr("Emergecy"));
|
|
DeviceMap.insert("Remote",tr("Remote"));
|
|
}
|
|
|
|
|
|
LinkUI::~LinkUI()
|
|
{
|
|
delete ui;
|
|
}
|
|
|
|
void LinkUI::settabtiltle(QVariant value)
|
|
{
|
|
ui->tabWidget->setTabText(ui->tabWidget->currentIndex(),value.toString());
|
|
}
|
|
|
|
void LinkUI::closeTab()
|
|
{
|
|
ui->tabWidget->removeTab(ui->tabWidget->currentIndex());
|
|
}
|
|
|
|
void LinkUI::recover(void)
|
|
{
|
|
//禁止除了自己之外在这个界面内所有按键
|
|
//将旧的按键全部删除
|
|
QObjectList Interface = ui->frame_InterfaceType->children();
|
|
foreach (QObject *obj, Interface) {
|
|
QPushButton *btn = qobject_cast<QPushButton *>(obj);
|
|
if(btn)
|
|
{
|
|
QPushButton *s = qobject_cast<QPushButton *>(sender());
|
|
btn->setEnabled(true);
|
|
}
|
|
}
|
|
|
|
QObjectList device = ui->frame_DeviceType->children();
|
|
foreach (QObject *obj, device) {
|
|
QPushButton *btn = qobject_cast<QPushButton *>(obj);
|
|
if(btn)
|
|
{
|
|
delete btn;
|
|
}
|
|
}
|
|
|
|
SerialPortCount = 0;
|
|
UDPCount = 0;
|
|
MulticastCount = 0;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void LinkUI::on_commandClicked()
|
|
{
|
|
//找到消息的发送者
|
|
QPushButton *btn = qobject_cast<QPushButton *>(sender());
|
|
if(btn)
|
|
{
|
|
DeviceString = DeviceMap.key(btn->text());
|
|
|
|
}
|
|
|
|
//打开设置界面
|
|
ConnectDialog *connectdialog = new ConnectDialog();
|
|
|
|
//设置参数
|
|
//connectdialog->setDevice(DeviceString);
|
|
//connectdialog->setInterface(InterfaceString);
|
|
|
|
|
|
connect(connectdialog,SIGNAL(cancelSignal()),
|
|
this,SLOT(closeTab()));
|
|
|
|
connect(connectdialog,SIGNAL(usrNameChanged(QVariant)),
|
|
this,SLOT(settabtiltle(QVariant)));
|
|
|
|
connect(connectdialog,SIGNAL(connectSignal(QVariant,QVariant,QVariant,QVariant,QVariant,QVariant,QVariant,QVariant)),
|
|
this,SIGNAL(connectSignal(QVariant,QVariant,QVariant,QVariant,QVariant,QVariant,QVariant,QVariant)));
|
|
|
|
connect(this,SIGNAL(PortConnect(QVariant,QVariant,QVariant,QVariant,QVariant,QVariant,QVariant,QVariant)),
|
|
connectdialog,SLOT(PortConnected(QVariant,QVariant,QVariant,QVariant,QVariant,QVariant,QVariant,QVariant)));
|
|
|
|
connectdialog->setInit(InterfaceString,DeviceString);
|
|
|
|
|
|
//当前界面恢复到初始状态
|
|
recover();//这个会删除btn指针
|
|
|
|
|
|
//新增一个界面在当前界面之前
|
|
//int index = ui->tabWidget->addTab(connectdialog,btn->text());
|
|
int index = ui->tabWidget->insertTab(ui->tabWidget->currentIndex(),connectdialog,DeviceString);
|
|
//int index = ui->tabWidget->indexOf(connectdialog);
|
|
ui->tabWidget->setCurrentIndex(index);
|
|
}
|
|
|
|
|
|
void LinkUI::on_pushButton_SerialPort_clicked()
|
|
{
|
|
if(SerialPortCount%2 == 0)
|
|
{
|
|
//禁止除了自己之外在这个界面内所有按键
|
|
//将旧的按键全部删除
|
|
QObjectList Interface = ui->frame_InterfaceType->children();
|
|
foreach (QObject *obj, Interface) {
|
|
QPushButton *btn = qobject_cast<QPushButton *>(obj);
|
|
if(btn)
|
|
{
|
|
QPushButton *s = qobject_cast<QPushButton *>(sender());
|
|
if(btn != s)
|
|
{
|
|
btn->setEnabled(false);
|
|
}
|
|
else
|
|
{
|
|
InterfaceString = btn->text();
|
|
}
|
|
}
|
|
}
|
|
|
|
QObjectList device = ui->frame_DeviceType->children();
|
|
foreach (QObject *obj, device) {
|
|
QPushButton *btn = qobject_cast<QPushButton *>(obj);
|
|
if(btn)
|
|
{
|
|
delete btn;
|
|
}
|
|
}
|
|
|
|
//根据现存的设备生成一个列表
|
|
for(QString info: DeviceMap.values()) {
|
|
QPushButton *btn = new QPushButton(ui->frame_DeviceType);
|
|
btn->setText(info);
|
|
btn->setFixedSize(200,80);
|
|
ui->frame_DeviceType->layout()->addWidget(btn);
|
|
connect(btn,SIGNAL(clicked(bool)),
|
|
this,SLOT(on_commandClicked()));
|
|
}
|
|
}
|
|
else
|
|
{
|
|
//使能除了自己之外在这个界面内所有按键
|
|
//将旧的按键全部删除
|
|
QObjectList Interface = ui->frame_InterfaceType->children();
|
|
foreach (QObject *obj, Interface) {
|
|
QPushButton *btn = qobject_cast<QPushButton *>(obj);
|
|
if(btn)
|
|
{
|
|
QPushButton *s = qobject_cast<QPushButton *>(sender());
|
|
if(btn != s)
|
|
btn->setEnabled(true);
|
|
}
|
|
}
|
|
|
|
QObjectList device = ui->frame_DeviceType->children();
|
|
foreach (QObject *obj, device) {
|
|
QPushButton *btn = qobject_cast<QPushButton *>(obj);
|
|
if(btn)
|
|
{
|
|
delete btn;
|
|
}
|
|
}
|
|
}
|
|
SerialPortCount ++;
|
|
}
|
|
|
|
void LinkUI::on_pushButton_UDP_clicked()
|
|
{
|
|
if(UDPCount%2 == 0)
|
|
{
|
|
//禁止除了自己之外在这个界面内所有按键
|
|
//将旧的按键全部删除
|
|
QObjectList Interface = ui->frame_InterfaceType->children();
|
|
foreach (QObject *obj, Interface) {
|
|
QPushButton *btn = qobject_cast<QPushButton *>(obj);
|
|
if(btn)
|
|
{
|
|
QPushButton *s = qobject_cast<QPushButton *>(sender());
|
|
if(btn != s)
|
|
{
|
|
btn->setEnabled(false);
|
|
}
|
|
else
|
|
{
|
|
InterfaceString = btn->text();
|
|
}
|
|
}
|
|
}
|
|
|
|
QObjectList device = ui->frame_DeviceType->children();
|
|
foreach (QObject *obj, device) {
|
|
QPushButton *btn = qobject_cast<QPushButton *>(obj);
|
|
if(btn)
|
|
{
|
|
delete btn;
|
|
}
|
|
}
|
|
|
|
//根据现存的设备生成一个列表
|
|
for(QString info: DeviceMap.values()) {
|
|
|
|
QPushButton *btn = new QPushButton(ui->frame_DeviceType);
|
|
btn->setText(info);
|
|
|
|
btn->setFixedSize(200,80);
|
|
|
|
ui->frame_DeviceType->layout()->addWidget(btn);
|
|
|
|
connect(btn,SIGNAL(clicked(bool)),
|
|
this,SLOT(on_commandClicked()));
|
|
|
|
}
|
|
}
|
|
else
|
|
{
|
|
//使能除了自己之外在这个界面内所有按键
|
|
//将旧的按键全部删除
|
|
QObjectList Interface = ui->frame_InterfaceType->children();
|
|
foreach (QObject *obj, Interface) {
|
|
QPushButton *btn = qobject_cast<QPushButton *>(obj);
|
|
if(btn)
|
|
{
|
|
QPushButton *s = qobject_cast<QPushButton *>(sender());
|
|
if(btn != s)
|
|
btn->setEnabled(true);
|
|
}
|
|
}
|
|
|
|
QObjectList device = ui->frame_DeviceType->children();
|
|
foreach (QObject *obj, device) {
|
|
QPushButton *btn = qobject_cast<QPushButton *>(obj);
|
|
if(btn)
|
|
{
|
|
delete btn;
|
|
}
|
|
}
|
|
}
|
|
|
|
UDPCount ++;
|
|
}
|
|
|
|
|
|
|
|
void LinkUI::on_pushButton_Multicast_clicked()
|
|
{
|
|
if(MulticastCount%2 == 0)
|
|
{
|
|
//禁止除了自己之外在这个界面内所有按键
|
|
//将旧的按键全部删除
|
|
QObjectList Interface = ui->frame_InterfaceType->children();
|
|
foreach (QObject *obj, Interface) {
|
|
QPushButton *btn = qobject_cast<QPushButton *>(obj);
|
|
if(btn)
|
|
{
|
|
QPushButton *s = qobject_cast<QPushButton *>(sender());
|
|
if(btn != s)
|
|
{
|
|
btn->setEnabled(false);
|
|
}
|
|
else
|
|
{
|
|
InterfaceString = btn->text();
|
|
}
|
|
}
|
|
}
|
|
|
|
QObjectList device = ui->frame_DeviceType->children();
|
|
foreach (QObject *obj, device) {
|
|
QPushButton *btn = qobject_cast<QPushButton *>(obj);
|
|
if(btn)
|
|
{
|
|
delete btn;
|
|
}
|
|
}
|
|
|
|
//根据现存的设备生成一个列表
|
|
for(QString info: DeviceMap.values()) {
|
|
|
|
QPushButton *btn = new QPushButton(ui->frame_DeviceType);
|
|
btn->setText(info);
|
|
|
|
btn->setFixedSize(200,80);
|
|
|
|
ui->frame_DeviceType->layout()->addWidget(btn);
|
|
|
|
connect(btn,SIGNAL(clicked(bool)),
|
|
this,SLOT(on_commandClicked()));
|
|
|
|
}
|
|
}
|
|
else
|
|
{
|
|
//使能除了自己之外在这个界面内所有按键
|
|
//将旧的按键全部删除
|
|
QObjectList Interface = ui->frame_InterfaceType->children();
|
|
foreach (QObject *obj, Interface) {
|
|
QPushButton *btn = qobject_cast<QPushButton *>(obj);
|
|
if(btn)
|
|
{
|
|
QPushButton *s = qobject_cast<QPushButton *>(sender());
|
|
if(btn != s)
|
|
btn->setEnabled(true);
|
|
}
|
|
}
|
|
|
|
QObjectList device = ui->frame_DeviceType->children();
|
|
foreach (QObject *obj, device) {
|
|
QPushButton *btn = qobject_cast<QPushButton *>(obj);
|
|
if(btn)
|
|
{
|
|
delete btn;
|
|
}
|
|
}
|
|
}
|
|
|
|
MulticastCount ++;
|
|
}
|