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