PowerMaster/dataPanel/dpConfigurationDialog.cpp

652 lines
26 KiB
C++
Raw Normal View History

2025-01-14 18:39:52 +08:00
#include "dpConfigurationDialog.h"
#include "ui_dpConfigurationDialog.h"
#include "dataPanel.h"
2025-01-22 15:40:50 +08:00
#include "global.h"
#include <QStandardItemModel>
#include <QRegularExpressionValidator>
#include <QTimer>
2025-01-14 18:39:52 +08:00
dpConfigurationDialog::dpConfigurationDialog(QWidget *parent)
: QDialog(parent)
, ui(new Ui::dpConfigurationDialog)
, m_curActiveTab(nullptr)
, m_pDataPanel(nullptr)
, m_pModel_typeSource(nullptr)
, m_pModel_typeSelected(nullptr)
2025-01-22 15:40:50 +08:00
, m_pModel_dataSource(nullptr)
, m_pModel_dataSelected(nullptr)
2025-01-14 18:39:52 +08:00
{
ui->setupUi(this);
setWindowFlags(Qt::FramelessWindowHint | Qt::WindowDoesNotAcceptFocus);
setAttribute(Qt::WA_TranslucentBackground);
initialize();
}
dpConfigurationDialog::~dpConfigurationDialog()
{
delete ui;
}
2025-01-22 15:40:50 +08:00
void dpConfigurationDialog::showEvent(QShowEvent* event)
{
//ui->stackedWidget->setCurrentIndex(0);
ui->tabDataType->click();
2025-01-22 15:40:50 +08:00
if(m_pModel_typeSelected && m_pModel_typeSelected->rowCount() == 0)
{
ui->errorTip->setVisible(true);
ui->errorTip->setToolTip(QString::fromStdWString(L"要至少选择一个数据类型"));
ui->btnConfirm->setEnabled(false);
}
else
{
ui->errorTip->setVisible(false);
//ui->errorTip->setToolTip(QString::fromStdWString(L"要至少选择一个数据类型"));
ui->btnConfirm->setEnabled(true);
}
}
2025-01-14 18:39:52 +08:00
void dpConfigurationDialog::initialize()
{
m_curAxisComboBoxIndex = -1;
2025-01-14 18:39:52 +08:00
ui->tabDataType->setProperty("index", 0);
connect(ui->tabDataType, SIGNAL(clicked()), this, SLOT(onBtnClicked_tabBtn()));
ui->tabDataSource->setProperty("index", 1);
connect(ui->tabDataSource, SIGNAL(clicked()), this, SLOT(onBtnClicked_tabBtn()));
ui->tabDisplaySetting->setProperty("index", 2);
connect(ui->tabDisplaySetting, SIGNAL(clicked()), this, SLOT(onBtnClicked_tabBtn()));
m_curActiveTab = ui->tabDataType;
ui->stackedWidget->setCurrentIndex(0);
connect(ui->btnConfirm, SIGNAL(clicked()), this, SLOT(onBtnClicked_confirm()));
connect(ui->btnCancle, SIGNAL(clicked()), this, SLOT(onBtnClicked_cancle()));
connect(ui->btnReomve_type, SIGNAL(clicked()), this, SLOT(onBtnClicked_remove_type()));
connect(ui->btnReomve_source, SIGNAL(clicked()), this, SLOT(onBtnClicked_remove_source()));
//connect(ui->radioBtn_showLegend, &QRadioButton::toggled, this, &dpConfigurationDialog::onRadioBtnToggled);
2025-06-13 11:21:16 +08:00
connect(ui->typeSourceList, &QListView::clicked, this, &dpConfigurationDialog::onItemClicked_typeSource);
connect(ui->dataSourceList, &QListView::clicked, this, &dpConfigurationDialog::onItemClicked_dataSource);
2025-01-22 15:40:50 +08:00
///数据类型
//typeSourceList
m_pModel_typeSource = new QStandardItemModel(this);
ui->typeSourceList->setModel(m_pModel_typeSource);
/*QStringList typeSourceTextList;
typeSourceTextList << QString::fromStdWString(L"电压") << QString::fromStdWString(L"电流") << QString::fromStdWString(L"功率");
for(QString& text: typeSourceTextList)
{
QStandardItem* item = new QStandardItem(text);
item->setEditable(false); //不可编辑
m_pModel_typeSource->appendRow(item);
}*/
QStandardItem* item = new QStandardItem("电压");
item->setData(RealTimeDataType::voltage, Qt::UserRole + itemRole_dataType);
item->setEditable(false); //不可编辑
m_pModel_typeSource->appendRow(item);
item = new QStandardItem("电流");
item->setData(RealTimeDataType::current, Qt::UserRole + itemRole_dataType);
item->setEditable(false); //不可编辑
m_pModel_typeSource->appendRow(item);
item = new QStandardItem("功率");
item->setData(RealTimeDataType::power, Qt::UserRole + itemRole_dataType);
item->setEditable(false); //不可编辑
m_pModel_typeSource->appendRow(item);
item = new QStandardItem("温度");
item->setData(RealTimeDataType::temperature, Qt::UserRole + itemRole_dataType);
item->setEditable(false); //不可编辑
m_pModel_typeSource->appendRow(item);
//typeSelectedList
ui->typeSelectedList->setSelectionBehavior(QAbstractItemView::SelectRows);
m_pModel_typeSelected = new QStandardItemModel(this);
ui->typeSelectedList->setModel(m_pModel_typeSelected);
2025-01-22 15:40:50 +08:00
///数据源
//dataSourceList
m_pModel_dataSource = new QStandardItemModel(this);
ui->dataSourceList->setModel(m_pModel_dataSource);
createDataSourceList();
//sourceSelectedList
ui->dataSelectedList->setSelectionBehavior(QAbstractItemView::SelectRows);
m_pModel_dataSelected = new QStandardItemModel(this);
ui->dataSelectedList->setModel(m_pModel_dataSelected);
///数据配置
QRegularExpression regExp_ip("^(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.){3}"
"(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$");
QRegularExpressionValidator* validator_ip = new QRegularExpressionValidator(regExp_ip, this);
ui->serviceIP->setValidator(validator_ip);
QRegularExpression regExp_port("^(?:[0-9]{1,4}|[1-5][0-9]{4}|6[0-4][0-9]{3}|65[0-4][0-9]{2}|655[0-2][0-9]|6553[0-5])$");
QRegularExpressionValidator* validator_port = new QRegularExpressionValidator(regExp_port, this);
ui->servicePort->setValidator(validator_port);
}
void dpConfigurationDialog::copyModelData(QStandardItemModel* sourceModel, QStandardItemModel* destModel)
{
if(!sourceModel || !destModel)
return;
for(int row = 0; row < destModel->rowCount(); row++)
{
for(int col = 0; col < destModel->columnCount(); col++)
{
QStandardItem* item = destModel->item(row, col);
if(item)
delete item;
}
}
destModel->clear(); //只做clear不会释放其中的item
for(int row = 0; row < sourceModel->rowCount(); row++)
{
QList<QStandardItem*> itemList;
for(int col = 0; col < sourceModel->columnCount(); col++)
{
QStandardItem* item = sourceModel->item(row, col);
if(item)
{
QStandardItem* newItem = new QStandardItem(item->text());
QString strTag = item->data(Qt::UserRole + itemRole_tag).toString();
newItem->setData(strTag, Qt::UserRole + itemRole_tag);
RealTimeDataType dataType = (RealTimeDataType)item->data(Qt::UserRole + itemRole_dataType).toInt();
newItem->setData(dataType, Qt::UserRole + itemRole_dataType);
if(strTag == "point")
{
newItem->setData(item->data(Qt::DecorationRole), Qt::DecorationRole);
newItem->setData(item->data(Qt::UserRole + itemRole_stationID), Qt::UserRole + itemRole_stationID);
newItem->setData(item->data(Qt::UserRole + itemRole_componentID), Qt::UserRole + itemRole_componentID);
newItem->setData(item->data(Qt::UserRole + itemRole_pointID), Qt::UserRole + itemRole_pointID);
}
itemList.push_back(newItem);
}
}
destModel->appendRow(itemList);
}
2025-01-14 18:39:52 +08:00
}
2025-01-22 15:40:50 +08:00
void dpConfigurationDialog::createDataSourceList()
{
//demo先临时写死后续改为接口动态创建
QStandardItem* rootItem = m_pModel_dataSource->invisibleRootItem();
for(int i = 0; i < 3; i++)
{
QString strStation = QString("测试站-") + QString::number(i + 1);
QStandardItem* stationItem = new QStandardItem(strStation);
stationItem->setEditable(false);
stationItem->setData("station", Qt::UserRole + itemRole_tag);
rootItem->appendRow(stationItem);
QStandardItem* componentItem = new QStandardItem("异步电机");
componentItem->setEditable(false);
componentItem->setData("component", Qt::UserRole + itemRole_tag);
stationItem->appendRow(componentItem);
QStandardItem* voltageItem = new QStandardItem("电压");
voltageItem->setEditable(false);
voltageItem->setData("point", Qt::UserRole + itemRole_tag);
voltageItem->setData(i, Qt::UserRole + itemRole_stationID);
voltageItem->setData(0, Qt::UserRole + itemRole_componentID);
voltageItem->setData(0, Qt::UserRole + itemRole_pointID);
voltageItem->setData(RealTimeDataType::voltage, Qt::UserRole + itemRole_dataType);
componentItem->appendRow(voltageItem);
QStandardItem* currentItem = new QStandardItem("电流");
currentItem->setEditable(false);
currentItem->setData("point", Qt::UserRole + itemRole_tag);
currentItem->setData(i, Qt::UserRole + itemRole_stationID);
currentItem->setData(0, Qt::UserRole + itemRole_componentID);
currentItem->setData(1, Qt::UserRole + itemRole_pointID);
currentItem->setData(RealTimeDataType::current, Qt::UserRole + itemRole_dataType);
componentItem->appendRow(currentItem);
QStandardItem* powerItem = new QStandardItem("功率");
powerItem->setEditable(false);
powerItem->setData("point", Qt::UserRole + itemRole_tag);
powerItem->setData(i, Qt::UserRole + itemRole_stationID);
powerItem->setData(0, Qt::UserRole + itemRole_componentID);
powerItem->setData(2, Qt::UserRole + itemRole_pointID);
powerItem->setData(RealTimeDataType::power, Qt::UserRole + itemRole_dataType);
componentItem->appendRow(powerItem);
QStandardItem* tempItem = new QStandardItem("温度");
tempItem->setEditable(false);
tempItem->setData("point", Qt::UserRole + itemRole_tag);
tempItem->setData(i, Qt::UserRole + itemRole_stationID);
tempItem->setData(0, Qt::UserRole + itemRole_componentID);
tempItem->setData(3, Qt::UserRole + itemRole_pointID);
tempItem->setData(RealTimeDataType::temperature, Qt::UserRole + itemRole_dataType);
componentItem->appendRow(tempItem);
}
2025-01-22 15:40:50 +08:00
ui->dataSourceList->expandAll();
}
void dpConfigurationDialog::removeDataSelected(int deleteRow)
{
QList<QStandardItem*> items = m_pModel_dataSelected->takeRow(deleteRow);
for(QStandardItem* item: items)
delete item;
//更新颜色-从当前删除项往后的所有项
for(int row = deleteRow; row < m_pModel_dataSelected->rowCount(); row++)
{
QStandardItem* item = m_pModel_dataSelected->item(row, 0);
if(item)
{
QColor color = g_globalColor.value(item->row() % g_globalColor.size());
item->setData(color, Qt::DecorationRole);
}
}
}
2025-01-14 18:39:52 +08:00
void dpConfigurationDialog::setPanel(DataPanel* pPanel)
{
if(!pPanel)
return;
2025-01-14 18:39:52 +08:00
m_pDataPanel = pPanel;
copyModelData(pPanel->m_cofigurationResults.m_pModel_dataType, m_pModel_typeSelected);
2025-01-22 15:40:50 +08:00
copyModelData(pPanel->m_cofigurationResults.m_pModel_dataSource, m_pModel_dataSelected);
// m_pModel_typeSelected = pPanel->m_cofigurationResults.m_pModel_dataType;
// if(m_pModel_typeSelected)
// ui->typeSelectedList->setModel(m_pModel_typeSelected);
ui->serviceIP->setText(pPanel->m_cofigurationResults.dataServiceIP);
ui->servicePort->setText(QString::number(pPanel->m_cofigurationResults.dataServicePort));
ui->radioBtn_showLegend->setChecked(pPanel->m_cofigurationResults.showLegend);
ui->radioBtn_groupByType->setChecked(pPanel->m_cofigurationResults.groupByType);
2025-07-14 15:02:29 +08:00
DataPanelType panelType = pPanel->getType();
switch (panelType)
{
case lineChart:
{
ui->specialSettings->setVisible(true);
2025-09-01 19:57:02 +08:00
ui->specialSettings->setCurrentIndex(0);
ui->axisArrangement->setCurrentIndex((int)m_pDataPanel->m_cofigurationResults.axisArrangement);
ui->axisObject->clear();
m_axisCfgMap.clear();
ui->axisName->setText("");
ui->axisUnit->setText("");
m_axisCfgMap = pPanel->m_cofigurationResults.axisCfgMap;
disconnect(ui->axisObject, &QComboBox::currentIndexChanged, this, &dpConfigurationDialog::onComboBoxIndexChanged_axis);
for(int i = 0; i< m_pModel_typeSelected->rowCount(); i++)
{
RealTimeDataType dataType = (RealTimeDataType)m_pModel_typeSelected->item(i, 0)->data(Qt::UserRole + itemRole_dataType).toInt();
QString itemText = m_pModel_typeSelected->item(i, 0)->text();
ui->axisObject->addItem(itemText, dataType);
}
if(ui->axisObject->count() > 0)
{
m_curAxisComboBoxIndex = ui->axisObject->currentIndex();
RealTimeDataType itemDataType = (RealTimeDataType)ui->axisObject->currentData().toInt();
if(m_axisCfgMap.contains(itemDataType))
{
ui->axisName->setText(m_axisCfgMap.value(itemDataType).name);
ui->axisUnit->setText(m_axisCfgMap.value(itemDataType).unit);
}
}
else
{
m_curAxisComboBoxIndex = -1;
}
connect(ui->axisObject, &QComboBox::currentIndexChanged, this, &dpConfigurationDialog::onComboBoxIndexChanged_axis);
2025-07-14 15:02:29 +08:00
break;
}
2025-08-25 15:10:02 +08:00
case barChart:
2025-09-01 19:57:02 +08:00
{
ui->specialSettings->setVisible(true);
ui->specialSettings->setCurrentIndex(1);
ui->barOrientation->setCurrentIndex((int)pPanel->m_cofigurationResults.barOrientataion);
2025-09-01 19:57:02 +08:00
break;
}
2025-07-14 15:02:29 +08:00
default:
ui->specialSettings->setVisible(false);
break;
}
2025-01-14 18:39:52 +08:00
}
void dpConfigurationDialog::onBtnClicked_tabBtn()
{
QPushButton* pTab = qobject_cast<QPushButton*>(sender());
if(pTab == m_curActiveTab)
return;
if(m_curActiveTab)
{
m_curActiveTab->setStyleSheet("QPushButton\n"
"{\n"
"color: rgb(250, 250, 250);\n"
"font: 700 12pt \"黑体\";\n"
"border:0px;\n"
"background-color:transparent;\n"
"}\n"
"QPushButton:hover\n"
"{\n"
"}\n"
"QPushButton:pressed\n"
"{\n"
"}");
}
if(pTab)
{
pTab->setStyleSheet("QPushButton\n"
"{\n"
"color: rgb(250, 250, 250);\n"
"font: 700 12pt \"黑体\";\n"
"border:1px solid rgb(200,200,200);\n"
"border-bottom:0px;\n"
"background-color:rgba(36,43,50, 250);\n"
"}\n"
"QPushButton:hover\n"
"{\n"
"}\n"
"QPushButton:pressed\n"
"{\n"
"}");
int nIndex = pTab->property("index").toInt();
ui->stackedWidget->setCurrentIndex(nIndex);
if(nIndex == 1 && m_pModel_dataSelected->rowCount() > 0)
ui->dataSelectedList->horizontalHeader()->setSectionResizeMode(0, QHeaderView::Stretch);
2025-01-14 18:39:52 +08:00
}
m_curActiveTab = pTab;
}
void dpConfigurationDialog::onBtnClicked_confirm()
{
hide();
emit sgl_hide();
if(m_pDataPanel)
{
//m_pDataPanel->m_cofigurationResults.m_pModel_dataType = m_pModel_typeSelected;
copyModelData(m_pModel_typeSelected, m_pDataPanel->m_cofigurationResults.m_pModel_dataType);
//m_pDataPanel->configurationComplete();
2025-01-22 15:40:50 +08:00
copyModelData(m_pModel_dataSelected, m_pDataPanel->m_cofigurationResults.m_pModel_dataSource);
m_pDataPanel->m_cofigurationResults.dataServiceIP = ui->serviceIP->text();
m_pDataPanel->m_cofigurationResults.dataServicePort = ui->servicePort->text().toInt();
m_pDataPanel->m_cofigurationResults.showLegend = ui->radioBtn_showLegend->isChecked();
2025-09-01 19:57:02 +08:00
m_pDataPanel->m_cofigurationResults.axisArrangement = (AxisArrangementMode)ui->axisArrangement->currentIndex();
DataPanelType panelType = m_pDataPanel->getType();
switch (panelType)
{
case lineChart:
{
2025-09-01 19:57:02 +08:00
RealTimeDataType itemDataType = (RealTimeDataType)ui->axisObject->currentData().toInt();
if(m_axisCfgMap.contains(itemDataType))
{
if(!ui->axisName->text().isEmpty())
m_axisCfgMap[itemDataType].name = ui->axisName->text();
m_axisCfgMap[itemDataType].unit = ui->axisUnit->text();
}
break;
}
case barChart:
{
m_pDataPanel->m_cofigurationResults.barOrientataion = (BarOrientation)ui->barOrientation->currentIndex();
m_pDataPanel->m_cofigurationResults.groupByType = ui->radioBtn_groupByType->isChecked();
break;
}
2025-09-01 19:57:02 +08:00
default:
break;
}
2025-09-01 19:57:02 +08:00
m_pDataPanel->m_cofigurationResults.axisCfgMap = m_axisCfgMap;
2025-01-22 15:40:50 +08:00
m_pDataPanel->configurationComplete();
}
2025-01-14 18:39:52 +08:00
}
void dpConfigurationDialog::onBtnClicked_cancle()
{
hide();
emit sgl_hide();
}
void dpConfigurationDialog::onItemClicked_typeSource(const QModelIndex& index)
{
QStandardItem* item = m_pModel_typeSource->itemFromIndex(index);
if(item)
{
bool bIsHad = false;
for(int i = 0; i< m_pModel_typeSelected->rowCount(); i++)
{
QString itemText = m_pModel_typeSelected->item(i, 0)->text();
if(itemText == item->text())
{
bIsHad = true;
break;
}
}
if(!m_pDataPanel)
{
ui->errorTip->setVisible(true);
ui->errorTip->setToolTip(QString("当前面板对象为nullptr"));
return;
}
if(!bIsHad && m_pModel_typeSelected)
{
2025-09-01 19:57:02 +08:00
int nMaximumType = m_pModel_typeSource->rowCount();
if(m_pDataPanel && (m_pDataPanel->getType() == lineChart || m_pDataPanel->getType() == barChart))
nMaximumType = 4;
if(m_pModel_typeSelected->rowCount() >= nMaximumType)
{
if(!ui->errorTip->isVisible())
{
ui->errorTip->setVisible(true);
ui->errorTip->setToolTip(QString("当前面板最多展示 %1 种类型数据").arg(nMaximumType));
//QTimer::singleShot(6000, this, [this]{ui->errorTip->setVisible(false);});
}
return;
}
QStandardItem* newItem = new QStandardItem(item->text());
2025-01-22 15:40:50 +08:00
newItem->setEditable(false);
RealTimeDataType dataType = (RealTimeDataType)item->data(Qt::UserRole + itemRole_dataType).toInt();
newItem->setData(dataType, Qt::UserRole + itemRole_dataType);
m_pModel_typeSelected->appendRow(newItem);
ui->typeSelectedList->horizontalHeader()->setSectionResizeMode(0, QHeaderView::Stretch);
2025-01-22 15:40:50 +08:00
//其它需要同步配置项
DataPanelType panelType = m_pDataPanel->getType();
switch (panelType)
{
case lineChart:
{
AxisCfgInfo cfg;
cfg.name = item->text();
m_axisCfgMap.insert(dataType, cfg);
disconnect(ui->axisObject, &QComboBox::currentIndexChanged, this, &dpConfigurationDialog::onComboBoxIndexChanged_axis);
ui->axisObject->addItem(item->text(), dataType);
m_curAxisComboBoxIndex = ui->axisObject->currentIndex();
if(ui->axisName->text().isEmpty())
ui->axisName->setText(ui->axisObject->currentText());
connect(ui->axisObject, &QComboBox::currentIndexChanged, this, &dpConfigurationDialog::onComboBoxIndexChanged_axis);
break;
}
2025-09-01 19:57:02 +08:00
case barChart:
{
break;
}
default:
break;
}
2025-01-22 15:40:50 +08:00
if(ui->errorTip->isVisible())
{
ui->errorTip->setVisible(false);
ui->btnConfirm->setEnabled(true);
}
}
}
}
void dpConfigurationDialog::onBtnClicked_remove_type()
{
QItemSelectionModel* selectionModel = ui->typeSelectedList->selectionModel();
if(selectionModel && m_pModel_typeSelected)
{
int nCurrentRow = selectionModel->currentIndex().row();
if(nCurrentRow == -1)
return;
//同步删除dataSource中已选择的该类型数据
RealTimeDataType itemDataType = (RealTimeDataType)m_pModel_typeSelected->data(selectionModel->currentIndex(), Qt::UserRole + itemRole_dataType).toInt();
for(int i = m_pModel_dataSelected->rowCount() - 1; i >= 0; i--) //倒序查找因为执行removeDataSelected时内部会从删除项往后更新颜色倒序可以减少循环次数
{
RealTimeDataType dataType = (RealTimeDataType)m_pModel_dataSelected->item(i, 0)->data(Qt::UserRole + itemRole_dataType).toInt();
if(itemDataType == dataType)
{
removeDataSelected(i);
}
}
QList<QStandardItem*> items = m_pModel_typeSelected->takeRow(nCurrentRow);
for(QStandardItem* item: items)
delete item;
2025-01-22 15:40:50 +08:00
//其它需要同步配置项
DataPanelType panelType = m_pDataPanel->getType();
switch (panelType)
{
case lineChart:
{
m_axisCfgMap.remove(itemDataType);
int index = ui->axisObject->findData(itemDataType);
if(index != -1)
{
disconnect(ui->axisObject, &QComboBox::currentIndexChanged, this, &dpConfigurationDialog::onComboBoxIndexChanged_axis);
ui->axisObject->removeItem(index);
if(ui->axisObject->count() == 0)
m_curAxisComboBoxIndex = -1;
else
m_curAxisComboBoxIndex = ui->axisObject->currentIndex();
connect(ui->axisObject, &QComboBox::currentIndexChanged, this, &dpConfigurationDialog::onComboBoxIndexChanged_axis);
}
break;
}
2025-09-01 19:57:02 +08:00
case barChart:
{
break;
}
default:
break;
}
2025-01-22 15:40:50 +08:00
if(m_pModel_typeSelected->rowCount() == 0)
{
ui->errorTip->setVisible(true);
ui->errorTip->setToolTip(QString::fromStdWString(L"要至少选择一个数据类型"));
ui->btnConfirm->setEnabled(false);
}
else if(ui->errorTip->isVisible())
ui->errorTip->setVisible(false);
}
}
2025-01-22 15:40:50 +08:00
void dpConfigurationDialog::onItemClicked_dataSource(const QModelIndex& index)
{
QStandardItem* item = m_pModel_dataSource->itemFromIndex(index);
if(item)
{
QString strTag = item->data(Qt::UserRole + itemRole_tag).toString();
if(strTag != "point")
return;
//只能对已选择的数据类型进行选择
bool bCanbeSelect = false;
RealTimeDataType itemDataType = (RealTimeDataType)item->data(Qt::UserRole + itemRole_dataType).toInt();
//qDebug() << "itemDataType" << itemDataType;
for(int i = 0; i < m_pModel_typeSelected->rowCount(); i++)
{
RealTimeDataType dataType = (RealTimeDataType)m_pModel_typeSelected->item(i, 0)->data(Qt::UserRole + itemRole_dataType).toInt();
//qDebug() << "dataType" << dataType;
if(itemDataType == dataType)
{
bCanbeSelect = true;
break;
}
}
if(!bCanbeSelect)
return;
2025-01-22 15:40:50 +08:00
QString strText = "";
QStandardItem* compontItme = item->parent();
if(compontItme && compontItme->data(Qt::UserRole + itemRole_tag).toString() == "component")
{
QStandardItem* stationItme = compontItme->parent();
if(stationItme && stationItme->data(Qt::UserRole + itemRole_tag).toString() == "station")
strText = stationItme->text() + "." + compontItme->text();
else
strText = compontItme->text();
}
if(strText.isEmpty())
strText = item->text();
else
strText = strText + "." + item->text();
bool bIsHad = false;
for(int i = 0; i< m_pModel_dataSelected->rowCount(); i++)
{
QString itemText = m_pModel_dataSelected->item(i, 0)->text();
if(itemText == strText)
{
bIsHad = true;
break;
}
}
if(!bIsHad && m_pModel_dataSelected)
{
QStandardItem* newItem = new QStandardItem(strText);
newItem->setEditable(false);
newItem->setData(item->data(Qt::UserRole + itemRole_tag), Qt::UserRole + itemRole_tag);
2025-01-22 15:40:50 +08:00
newItem->setData(item->data(Qt::UserRole + itemRole_stationID), Qt::UserRole + itemRole_stationID);
newItem->setData(item->data(Qt::UserRole + itemRole_componentID), Qt::UserRole + itemRole_componentID);
newItem->setData(item->data(Qt::UserRole + itemRole_pointID), Qt::UserRole + itemRole_pointID);
newItem->setData(item->data(Qt::UserRole + itemRole_dataType), Qt::UserRole + itemRole_dataType);
2025-01-22 15:40:50 +08:00
m_pModel_dataSelected->appendRow(newItem);
QColor color = g_globalColor.value(newItem->row() % g_globalColor.size());
2025-01-22 15:40:50 +08:00
newItem->setData(color, Qt::DecorationRole);
ui->dataSelectedList->horizontalHeader()->setSectionResizeMode(0, QHeaderView::Stretch);
}
}
}
void dpConfigurationDialog::onBtnClicked_remove_source()
2025-01-22 15:40:50 +08:00
{
QItemSelectionModel* selectionModel = ui->dataSelectedList->selectionModel();
if(selectionModel && m_pModel_dataSelected)
{
int nCurrentRow = selectionModel->currentIndex().row();
removeDataSelected(nCurrentRow);
2025-01-22 15:40:50 +08:00
}
}
void dpConfigurationDialog::onComboBoxIndexChanged_axis(int index)
{
if(m_curAxisComboBoxIndex == -1)
return;
RealTimeDataType itemDataType = (RealTimeDataType)ui->axisObject->itemData(m_curAxisComboBoxIndex).toInt();
if(m_axisCfgMap.contains(itemDataType))
{
if(!ui->axisName->text().isEmpty())
m_axisCfgMap[itemDataType].name = ui->axisName->text();
m_axisCfgMap[itemDataType].unit = ui->axisUnit->text();
m_curAxisComboBoxIndex = ui->axisObject->currentIndex();
itemDataType = (RealTimeDataType)ui->axisObject->itemData(m_curAxisComboBoxIndex).toInt();
if(m_axisCfgMap.contains(itemDataType))
{
ui->axisName->setText(m_axisCfgMap.value(itemDataType).name);
ui->axisUnit->setText(m_axisCfgMap.value(itemDataType).unit);
}
}
}
void dpConfigurationDialog::onRadioBtnToggled(bool checked)
{
}