feat:增加数据类型和数据源之间配置逻辑约束以及同步功能
This commit is contained in:
parent
1c2d83e8fb
commit
d9a74285e9
|
|
@ -152,41 +152,64 @@ void dpConfigurationDialog::createDataSourceList()
|
||||||
{
|
{
|
||||||
//demo先临时写死,后续改为接口动态创建
|
//demo先临时写死,后续改为接口动态创建
|
||||||
QStandardItem* rootItem = m_pModel_dataSource->invisibleRootItem();
|
QStandardItem* rootItem = m_pModel_dataSource->invisibleRootItem();
|
||||||
QStandardItem* stationItem = new QStandardItem("测试站");
|
for(int i = 0; i < 3; i++)
|
||||||
stationItem->setEditable(false);
|
{
|
||||||
stationItem->setData("station", Qt::UserRole + itemRole_tag);
|
QString strStation = QString("测试站-") + QString::number(i + 1);
|
||||||
rootItem->appendRow(stationItem);
|
QStandardItem* stationItem = new QStandardItem(strStation);
|
||||||
QStandardItem* componentItem = new QStandardItem("异步电机");
|
stationItem->setEditable(false);
|
||||||
componentItem->setEditable(false);
|
stationItem->setData("station", Qt::UserRole + itemRole_tag);
|
||||||
componentItem->setData("component", Qt::UserRole + itemRole_tag);
|
rootItem->appendRow(stationItem);
|
||||||
stationItem->appendRow(componentItem);
|
QStandardItem* componentItem = new QStandardItem("异步电机");
|
||||||
QStandardItem* currentItem = new QStandardItem("电流");
|
componentItem->setEditable(false);
|
||||||
currentItem->setEditable(false);
|
componentItem->setData("component", Qt::UserRole + itemRole_tag);
|
||||||
currentItem->setData("current", Qt::UserRole + itemRole_tag);
|
stationItem->appendRow(componentItem);
|
||||||
currentItem->setData(0, Qt::UserRole + itemRole_stationID);
|
QStandardItem* voltageItem = new QStandardItem("电压");
|
||||||
currentItem->setData(0, Qt::UserRole + itemRole_componentID);
|
voltageItem->setEditable(false);
|
||||||
currentItem->setData(0, Qt::UserRole + itemRole_pointID);
|
voltageItem->setData("point", Qt::UserRole + itemRole_tag);
|
||||||
currentItem->setData(RealTimeDataType::current, Qt::UserRole + itemRole_dataType);
|
voltageItem->setData(i, Qt::UserRole + itemRole_stationID);
|
||||||
componentItem->appendRow(currentItem);
|
voltageItem->setData(0, Qt::UserRole + itemRole_componentID);
|
||||||
QStandardItem* voltageItem = new QStandardItem("电压");
|
voltageItem->setData(0, Qt::UserRole + itemRole_pointID);
|
||||||
voltageItem->setEditable(false);
|
voltageItem->setData(RealTimeDataType::voltage, Qt::UserRole + itemRole_dataType);
|
||||||
voltageItem->setData("voltage", Qt::UserRole + itemRole_tag);
|
componentItem->appendRow(voltageItem);
|
||||||
voltageItem->setData(0, Qt::UserRole + itemRole_stationID);
|
QStandardItem* currentItem = new QStandardItem("电流");
|
||||||
voltageItem->setData(0, Qt::UserRole + itemRole_componentID);
|
currentItem->setEditable(false);
|
||||||
voltageItem->setData(1, Qt::UserRole + itemRole_pointID);
|
currentItem->setData("point", Qt::UserRole + itemRole_tag);
|
||||||
voltageItem->setData(RealTimeDataType::voltage, Qt::UserRole + itemRole_dataType);
|
currentItem->setData(i, Qt::UserRole + itemRole_stationID);
|
||||||
componentItem->appendRow(voltageItem);
|
currentItem->setData(0, Qt::UserRole + itemRole_componentID);
|
||||||
QStandardItem* powerItem = new QStandardItem("功率");
|
currentItem->setData(1, Qt::UserRole + itemRole_pointID);
|
||||||
powerItem->setEditable(false);
|
currentItem->setData(RealTimeDataType::current, Qt::UserRole + itemRole_dataType);
|
||||||
powerItem->setData("power", Qt::UserRole + itemRole_tag);
|
componentItem->appendRow(currentItem);
|
||||||
powerItem->setData(0, Qt::UserRole + itemRole_stationID);
|
QStandardItem* powerItem = new QStandardItem("功率");
|
||||||
powerItem->setData(0, Qt::UserRole + itemRole_componentID);
|
powerItem->setEditable(false);
|
||||||
powerItem->setData(2, Qt::UserRole + itemRole_pointID);
|
powerItem->setData("point", Qt::UserRole + itemRole_tag);
|
||||||
powerItem->setData(RealTimeDataType::voltage, Qt::UserRole + itemRole_dataType);
|
powerItem->setData(i, Qt::UserRole + itemRole_stationID);
|
||||||
componentItem->appendRow(powerItem);
|
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);
|
||||||
|
}
|
||||||
|
|
||||||
ui->dataSourceList->expandAll();
|
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);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
void dpConfigurationDialog::setPanel(DataPanel* pPanel)
|
void dpConfigurationDialog::setPanel(DataPanel* pPanel)
|
||||||
{
|
{
|
||||||
m_pDataPanel = pPanel;
|
m_pDataPanel = pPanel;
|
||||||
|
|
@ -303,6 +326,8 @@ void dpConfigurationDialog::onItemClicked_typeSource(const QModelIndex& index)
|
||||||
|
|
||||||
QStandardItem* newItem = new QStandardItem(item->text());
|
QStandardItem* newItem = new QStandardItem(item->text());
|
||||||
newItem->setEditable(false);
|
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);
|
m_pModel_typeSelected->appendRow(newItem);
|
||||||
ui->typeSelectedList->horizontalHeader()->setSectionResizeMode(0, QHeaderView::Stretch);
|
ui->typeSelectedList->horizontalHeader()->setSectionResizeMode(0, QHeaderView::Stretch);
|
||||||
|
|
||||||
|
|
@ -323,6 +348,18 @@ void dpConfigurationDialog::onBtnClicked_remove_type()
|
||||||
if(nCurrentRow == -1)
|
if(nCurrentRow == -1)
|
||||||
return;
|
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);
|
||||||
|
//i++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
QList<QStandardItem*> items = m_pModel_typeSelected->takeRow(nCurrentRow);
|
QList<QStandardItem*> items = m_pModel_typeSelected->takeRow(nCurrentRow);
|
||||||
for(QStandardItem* item: items)
|
for(QStandardItem* item: items)
|
||||||
delete item;
|
delete item;
|
||||||
|
|
@ -347,6 +384,24 @@ void dpConfigurationDialog::onItemClicked_dataSource(const QModelIndex& index)
|
||||||
if(strTag != "point")
|
if(strTag != "point")
|
||||||
return;
|
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;
|
||||||
|
|
||||||
QString strText = "";
|
QString strText = "";
|
||||||
QStandardItem* compontItme = item->parent();
|
QStandardItem* compontItme = item->parent();
|
||||||
if(compontItme && compontItme->data(Qt::UserRole + itemRole_tag).toString() == "component")
|
if(compontItme && compontItme->data(Qt::UserRole + itemRole_tag).toString() == "component")
|
||||||
|
|
@ -380,8 +435,9 @@ void dpConfigurationDialog::onItemClicked_dataSource(const QModelIndex& index)
|
||||||
newItem->setData(item->data(Qt::UserRole + itemRole_stationID), Qt::UserRole + itemRole_stationID);
|
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_componentID), Qt::UserRole + itemRole_componentID);
|
||||||
newItem->setData(item->data(Qt::UserRole + itemRole_pointID), Qt::UserRole + itemRole_pointID);
|
newItem->setData(item->data(Qt::UserRole + itemRole_pointID), Qt::UserRole + itemRole_pointID);
|
||||||
|
newItem->setData(item->data(Qt::UserRole + itemRole_dataType), Qt::UserRole + itemRole_dataType);
|
||||||
m_pModel_dataSelected->appendRow(newItem);
|
m_pModel_dataSelected->appendRow(newItem);
|
||||||
QColor color = g_globlaColor.value(newItem->row() % g_globlaColor.size());
|
QColor color = g_globalColor.value(newItem->row() % g_globalColor.size());
|
||||||
newItem->setData(color, Qt::DecorationRole);
|
newItem->setData(color, Qt::DecorationRole);
|
||||||
ui->dataSelectedList->horizontalHeader()->setSectionResizeMode(0, QHeaderView::Stretch);
|
ui->dataSelectedList->horizontalHeader()->setSectionResizeMode(0, QHeaderView::Stretch);
|
||||||
}
|
}
|
||||||
|
|
@ -393,19 +449,6 @@ void dpConfigurationDialog::onBtnClicked_remove_source()
|
||||||
if(selectionModel && m_pModel_dataSelected)
|
if(selectionModel && m_pModel_dataSelected)
|
||||||
{
|
{
|
||||||
int nCurrentRow = selectionModel->currentIndex().row();
|
int nCurrentRow = selectionModel->currentIndex().row();
|
||||||
QList<QStandardItem*> items = m_pModel_dataSelected->takeRow(nCurrentRow);
|
removeDataSelected(nCurrentRow);
|
||||||
for(QStandardItem* item: items)
|
|
||||||
delete item;
|
|
||||||
|
|
||||||
//更新颜色-从当前删除项往后的所有项
|
|
||||||
for(int row = nCurrentRow; row < m_pModel_dataSelected->rowCount(); row++)
|
|
||||||
{
|
|
||||||
QStandardItem* item = m_pModel_dataSelected->item(row, 0);
|
|
||||||
if(item)
|
|
||||||
{
|
|
||||||
QColor color = g_globlaColor.value(item->row() % g_globlaColor.size());
|
|
||||||
item->setData(color, Qt::DecorationRole);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -43,6 +43,7 @@ private:
|
||||||
void initialize();
|
void initialize();
|
||||||
void copyModelData(QStandardItemModel*, QStandardItemModel*);
|
void copyModelData(QStandardItemModel*, QStandardItemModel*);
|
||||||
void createDataSourceList();
|
void createDataSourceList();
|
||||||
|
void removeDataSelected(int);
|
||||||
|
|
||||||
Ui::dpConfigurationDialog* ui;
|
Ui::dpConfigurationDialog* ui;
|
||||||
QPushButton* m_curActiveTab;
|
QPushButton* m_curActiveTab;
|
||||||
|
|
|
||||||
|
|
@ -48,7 +48,7 @@ enum TimeUnit
|
||||||
};
|
};
|
||||||
|
|
||||||
extern MessageDialogBtn g_msgDlgBtn;
|
extern MessageDialogBtn g_msgDlgBtn;
|
||||||
extern QHash<int, QColor> g_globlaColor;
|
extern QHash<int, QColor> g_globalColor;
|
||||||
extern QHash<int, QString> g_timeUnit;
|
extern QHash<int, QString> g_timeUnit;
|
||||||
|
|
||||||
void initializeGlobalVariable();
|
void initializeGlobalVariable();
|
||||||
|
|
|
||||||
|
|
@ -2,24 +2,24 @@
|
||||||
|
|
||||||
MessageDialogBtn g_msgDlgBtn = btn_Null;
|
MessageDialogBtn g_msgDlgBtn = btn_Null;
|
||||||
|
|
||||||
QHash<int, QColor> g_globlaColor;
|
QHash<int, QColor> g_globalColor;
|
||||||
QHash<int, QString> g_timeUnit;
|
QHash<int, QString> g_timeUnit;
|
||||||
|
|
||||||
void initializeGlobalVariable()
|
void initializeGlobalVariable()
|
||||||
{
|
{
|
||||||
//颜色
|
//颜色
|
||||||
g_globlaColor.insert(0, QColor(153, 50, 204)); //深兰花紫
|
g_globalColor.insert(0, QColor(153, 50, 204)); //深兰花紫
|
||||||
g_globlaColor.insert(1, QColor(127, 255, 170)); //绿玉\碧绿色
|
g_globalColor.insert(1, QColor(127, 255, 170)); //绿玉\碧绿色
|
||||||
g_globlaColor.insert(2, QColor(0, 206, 209)); //深绿宝石
|
g_globalColor.insert(2, QColor(0, 206, 209)); //深绿宝石
|
||||||
g_globlaColor.insert(3, QColor(46, 139, 87)); //海洋绿
|
g_globalColor.insert(3, QColor(46, 139, 87)); //海洋绿
|
||||||
g_globlaColor.insert(4, QColor(225, 215, 0)); //金色
|
g_globalColor.insert(4, QColor(225, 215, 0)); //金色
|
||||||
g_globlaColor.insert(5, QColor(255, 165, 0)); //橙色
|
g_globalColor.insert(5, QColor(255, 165, 0)); //橙色
|
||||||
g_globlaColor.insert(6, QColor(144, 238, 144)); //浅绿色
|
g_globalColor.insert(6, QColor(144, 238, 144)); //浅绿色
|
||||||
g_globlaColor.insert(7, QColor(218, 112, 214)); //兰花的紫色
|
g_globalColor.insert(7, QColor(218, 112, 214)); //兰花的紫色
|
||||||
g_globlaColor.insert(8, QColor(70, 130, 180)); //钢蓝
|
g_globalColor.insert(8, QColor(70, 130, 180)); //钢蓝
|
||||||
g_globlaColor.insert(9, QColor(218, 165, 32)); //秋麒麟
|
g_globalColor.insert(9, QColor(218, 165, 32)); //秋麒麟
|
||||||
g_globlaColor.insert(10, QColor(240, 128, 128)); //淡珊瑚色
|
g_globalColor.insert(10, QColor(240, 128, 128)); //淡珊瑚色
|
||||||
g_globlaColor.insert(11, QColor(70, 130, 180)); //钢蓝
|
g_globalColor.insert(11, QColor(70, 130, 180)); //钢蓝
|
||||||
//时间单位
|
//时间单位
|
||||||
g_timeUnit.insert(TU_Year, QString::fromWCharArray(L"365d"));
|
g_timeUnit.insert(TU_Year, QString::fromWCharArray(L"365d"));
|
||||||
g_timeUnit.insert(TU_Month, QString::fromWCharArray(L"30d"));
|
g_timeUnit.insert(TU_Month, QString::fromWCharArray(L"30d"));
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue