Files
gcs-nf/App/Setting/Index0/LinkUI/LinkUI.cpp
T

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 ++;
}