完成‘修改模型信息’时更改了模型名称,该模型下被打开的属性组浏览tab的文字也做同步更新
This commit is contained in:
parent
4c3f3db44b
commit
2fa520e6a6
|
|
@ -25,6 +25,7 @@ public:
|
||||||
void addTab_attribute(const QString&, ModelAttributeGroup&);
|
void addTab_attribute(const QString&, ModelAttributeGroup&);
|
||||||
void closeTab_attribute(ModelAttributeGroup&);
|
void closeTab_attribute(ModelAttributeGroup&);
|
||||||
void closeAllTab_attribute();
|
void closeAllTab_attribute();
|
||||||
|
void updateTabTextByModelNameChanged(const QString&, const QString&);
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
bool eventFilter(QObject*, QEvent*) override;
|
bool eventFilter(QObject*, QEvent*) override;
|
||||||
|
|
|
||||||
|
|
@ -41,6 +41,7 @@ signals:
|
||||||
|
|
||||||
public slots:
|
public slots:
|
||||||
void refreshStructure_Connection(const QString& connection); //刷新某个链接的数据(比如刷新、关闭或者手动刷新时)
|
void refreshStructure_Connection(const QString& connection); //刷新某个链接的数据(比如刷新、关闭或者手动刷新时)
|
||||||
|
void refreshStructure_Model(const QString& connection, int modelID);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
DBStructureNode* getNode(const QModelIndex& index) const;
|
DBStructureNode* getNode(const QModelIndex& index) const;
|
||||||
|
|
|
||||||
|
|
@ -67,7 +67,8 @@ private slots:
|
||||||
void onSIG_connectionStatusChanged(const QString& strConnectionName, bool bConnected);
|
void onSIG_connectionStatusChanged(const QString& strConnectionName, bool bConnected);
|
||||||
void onSIG_addModel(Model&);
|
void onSIG_addModel(Model&);
|
||||||
void onSIG_addGroups(int, QVector<int>);
|
void onSIG_addGroups(int, QVector<int>);
|
||||||
void onSIG_updateModelNodeText(int, const QString&);
|
void onSIG_updateModelNodeText(int, const QString&, const QString&);
|
||||||
|
void onSIG_updateModelGroups(int, const QVector<int>&, const QVector<int>&);
|
||||||
//void onSIG_addAttributes();
|
//void onSIG_addAttributes();
|
||||||
void onSIG_openAttributeInfo(const QString&, ModelAttributeGroup&);
|
void onSIG_openAttributeInfo(const QString&, ModelAttributeGroup&);
|
||||||
void onSIG_closeAttributeInfo(ModelAttributeGroup&);
|
void onSIG_closeAttributeInfo(ModelAttributeGroup&);
|
||||||
|
|
|
||||||
|
|
@ -57,7 +57,8 @@ private:
|
||||||
|
|
||||||
signals:
|
signals:
|
||||||
void addModel(Model&);
|
void addModel(Model&);
|
||||||
void updateModelNodeText(int, const QString&);
|
void updateModelNodeText(int, const QString&, const QString&);
|
||||||
|
void updateModelGroups(int, const QVector<int>&, const QVector<int>&);
|
||||||
|
|
||||||
public slots:
|
public slots:
|
||||||
void onBtnClicked_selectImage();
|
void onBtnClicked_selectImage();
|
||||||
|
|
|
||||||
|
|
@ -152,6 +152,19 @@ void DatabaseBrowser::closeAllTab_attribute()
|
||||||
onTabCloseRequested(0);
|
onTabCloseRequested(0);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void DatabaseBrowser::updateTabTextByModelNameChanged(const QString& oldName, const QString& newName)
|
||||||
|
{
|
||||||
|
for(int i = 0; i < ui->tabWidget->count(); i++)
|
||||||
|
{
|
||||||
|
QStringList textList = ui->tabWidget->tabText(i).split("/");
|
||||||
|
if(textList.size() == 2 && textList.at(0) == oldName)
|
||||||
|
{
|
||||||
|
QString newTabText = newName + "/" + textList.at(1);
|
||||||
|
ui->tabWidget->setTabText(i, newTabText);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
void DatabaseBrowser::onTabCloseRequested(int index)
|
void DatabaseBrowser::onTabCloseRequested(int index)
|
||||||
{
|
{
|
||||||
/*QObject* sender = QObject::sender();
|
/*QObject* sender = QObject::sender();
|
||||||
|
|
|
||||||
|
|
@ -265,14 +265,14 @@ void DBStructureModel::addDataGroup(const QString& connection, int modelID, QVec
|
||||||
DBStructureNode* connNode = getConnectionNode(connection);
|
DBStructureNode* connNode = getConnectionNode(connection);
|
||||||
if(!connNode)
|
if(!connNode)
|
||||||
{
|
{
|
||||||
LOG_ERROR("DBStructureModel", QString::fromWCharArray(L"添加数组时获取ConnectionNode失败,节点名称:%1").arg(connection));
|
LOG_ERROR("DBStructureModel", QString::fromWCharArray(L"添加属性组时获取ConnectionNode失败,节点名称:%1").arg(connection));
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
DBStructureNode* modelNode = getModelNode(connNode, modelID);
|
DBStructureNode* modelNode = getModelNode(connNode, modelID);
|
||||||
if(!connNode)
|
if(!connNode)
|
||||||
{
|
{
|
||||||
LOG_ERROR("DBStructureModel", QString::fromWCharArray(L"添加数组时获取ModelNode失败,节点ID:%1").arg(modelID));
|
LOG_ERROR("DBStructureModel", QString::fromWCharArray(L"添加属性组时获取ModelNode失败,节点ID:%1").arg(modelID));
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -409,5 +409,49 @@ void DBStructureModel::refreshStructure_Connection(const QString& connection)
|
||||||
QModelIndex bottomRight = index(connNode->row(), 0, QModelIndex());
|
QModelIndex bottomRight = index(connNode->row(), 0, QModelIndex());
|
||||||
emit dataChanged(topLeft, bottomRight, {Qt::DecorationRole});
|
emit dataChanged(topLeft, bottomRight, {Qt::DecorationRole});
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void DBStructureModel::refreshStructure_Model(const QString& connection, int modelID)
|
||||||
|
{
|
||||||
|
DBStructureNode* connNode = getConnectionNode(connection);
|
||||||
|
if(!connNode)
|
||||||
|
{
|
||||||
|
LOG_ERROR("DBStructureModel", QString::fromWCharArray(L"刷新模型节点时获取ConnectionNode失败,节点名称:%1").arg(connection));
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
QModelIndex connIndex = index(connNode->row(), 0, QModelIndex());
|
||||||
|
|
||||||
|
DBStructureNode* modelNode = getModelNode(connNode, modelID);
|
||||||
|
if(!connNode)
|
||||||
|
{
|
||||||
|
LOG_ERROR("DBStructureModel", QString::fromWCharArray(L"刷新模型节点时获取ModelNode失败,节点ID:%1").arg(modelID));
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
//先删除
|
||||||
|
if(modelNode->childCount() > 0)
|
||||||
|
{
|
||||||
|
beginRemoveRows(index(modelNode->row(), 0, connIndex), 0, modelNode->childCount() - 1);
|
||||||
|
modelNode->removeAllChildren();
|
||||||
|
endRemoveRows(); //该语句之后会触发rowsRemoved(const QModelIndex &parent, int first, int last)信号,通知视图刷新对应行
|
||||||
|
}
|
||||||
|
|
||||||
|
//读取最新数据重新添加
|
||||||
|
QVector<int> groups = SqlQueryExecutor::instance().getModelGroups(connection, modelID);
|
||||||
|
beginInsertRows(index(modelNode->row(), 0, connIndex), 0, groups.count() - 1);
|
||||||
|
|
||||||
|
for(int groupID : groups)
|
||||||
|
{
|
||||||
|
//QString groupName = SqlQueryExecutor::instance().getAttributeGroupName(connection, groupID);
|
||||||
|
AttributeGroup group = SqlQueryExecutor::instance().getAttributeGroupData(connection, groupID);
|
||||||
|
if(group.name.isEmpty())
|
||||||
|
continue;
|
||||||
|
DBStructureNode* groupNode = new DBStructureNode(GroupNode, group.name, modelNode);
|
||||||
|
groupNode->setData(Qt::UserRole + NodeDataRole::ID, groupID);
|
||||||
|
groupNode->setData(Qt::UserRole + NodeDataRole::Type, group.isPublic);
|
||||||
|
modelNode->appendChild(groupNode);
|
||||||
|
}
|
||||||
|
|
||||||
|
endInsertRows();
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -307,7 +307,11 @@ void DBStructureView::showContextMenu(const QPoint& pos)
|
||||||
closeAttributeGroup(node);
|
closeAttributeGroup(node);
|
||||||
removeNode(node);
|
removeNode(node);
|
||||||
});
|
});
|
||||||
menu.addAction(QString::fromWCharArray(L"刷新"), []{});
|
menu.addAction(QString::fromWCharArray(L"刷新"), [this, node]{
|
||||||
|
DBStructureModel* model = dynamic_cast<DBStructureModel*>(this->model());
|
||||||
|
if(model && node->parentNode())
|
||||||
|
model->refreshStructure_Model(node->parentNode()->name(), node->data(Qt::UserRole + NodeDataRole::ID).toInt());
|
||||||
|
});
|
||||||
menu.addSeparator();
|
menu.addSeparator();
|
||||||
menu.addAction(QString::fromWCharArray(L"修改"), [this, node]{
|
menu.addAction(QString::fromWCharArray(L"修改"), [this, node]{
|
||||||
emit acitonTrigger_updateModel(node->data(Qt::UserRole + NodeDataRole::ID).toInt());
|
emit acitonTrigger_updateModel(node->data(Qt::UserRole + NodeDataRole::ID).toInt());
|
||||||
|
|
|
||||||
|
|
@ -351,10 +351,24 @@ void MainWindow::onSIG_addGroups(int modelID, QVector<int> groups)
|
||||||
m_pDBStrutureModel->addDataGroup(connection, modelID, groups);
|
m_pDBStrutureModel->addDataGroup(connection, modelID, groups);
|
||||||
}
|
}
|
||||||
|
|
||||||
void MainWindow::onSIG_updateModelNodeText(int modelID, const QString& text)
|
void MainWindow::onSIG_updateModelNodeText(int modelID, const QString& oldText, const QString& newText)
|
||||||
{
|
{
|
||||||
QString connection = m_pDBStrutureView->curConnection();
|
QString connection = m_pDBStrutureView->curConnection();
|
||||||
m_pDBStrutureModel->updateDataModelName(connection, modelID, text);
|
m_pDBStrutureModel->updateDataModelName(connection, modelID, newText);
|
||||||
|
//更新tab的text(若打开)
|
||||||
|
if(m_dbBrowser)
|
||||||
|
m_dbBrowser->updateTabTextByModelNameChanged(oldText, newText);
|
||||||
|
}
|
||||||
|
|
||||||
|
void MainWindow::onSIG_updateModelGroups(int modelID, const QVector<int>& removed, const QVector<int>& added)
|
||||||
|
{
|
||||||
|
//执行步骤:1、删除相应数据行组. 2、添加相应属性组. 3、刷新模型节点
|
||||||
|
QString connection = m_pDBStrutureView->curConnection();
|
||||||
|
for(int groupID : removed)
|
||||||
|
{
|
||||||
|
// if(SqlQueryExecutor::instance().removeAttributeGroup(connection, modelID, groupID) && m_dbBrowser)
|
||||||
|
// m_dbBrowser->closeTab_attribute()
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void MainWindow::onSIG_openAttributeInfo(const QString& connection, ModelAttributeGroup& attributeGroup)
|
void MainWindow::onSIG_openAttributeInfo(const QString& connection, ModelAttributeGroup& attributeGroup)
|
||||||
|
|
|
||||||
|
|
@ -372,14 +372,14 @@ void ModelInfoEditDialog::onBtnClicked_save()
|
||||||
{
|
{
|
||||||
if(modelName != m_oldName) //更新对应树节点
|
if(modelName != m_oldName) //更新对应树节点
|
||||||
{
|
{
|
||||||
emit updateModelNodeText(m_curModelID, modelName);
|
emit updateModelNodeText(m_curModelID, m_oldName, modelName);
|
||||||
}
|
}
|
||||||
//计算删除和添加的属性组-转化为QSet,然后利用QSet的‘-’运算符操作
|
//计算删除和添加的属性组-转化为QSet,然后利用QSet的‘-’运算符操作
|
||||||
QSet<int> oldSet(m_oldGroups.begin(), m_oldGroups.end());
|
QSet<int> oldSet(m_oldGroups.begin(), m_oldGroups.end());
|
||||||
QSet<int> newSet(model.groups.begin(), model.groups.end());
|
QSet<int> newSet(model.groups.begin(), model.groups.end());
|
||||||
QSet<int> added = newSet - oldSet;
|
QSet<int> added = newSet - oldSet;
|
||||||
QSet<int> removed = oldSet - newSet;
|
QSet<int> removed = oldSet - newSet;
|
||||||
|
emit updateModelGroups(m_curModelID, removed.values(), added.values());
|
||||||
|
|
||||||
close();
|
close();
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue