From 972c70e6087eb92468a1c70cd34bb1aef3d53997 Mon Sep 17 00:00:00 2001 From: Roman Telezhynskyi Date: Fri, 14 Oct 2016 21:33:12 +0300 Subject: [PATCH] Selected detail is also selected in the list. --HG-- branch : develop --- src/app/valentina/dialogs/vwidgetdetails.cpp | 16 ++++++++++++++++ src/app/valentina/dialogs/vwidgetdetails.h | 1 + src/app/valentina/mainwindow.cpp | 1 + src/libs/ifc/xml/vabstractpattern.cpp | 6 ++++++ src/libs/ifc/xml/vabstractpattern.h | 2 ++ src/libs/vtools/tools/vtooldetail.cpp | 1 + 6 files changed, 27 insertions(+) diff --git a/src/app/valentina/dialogs/vwidgetdetails.cpp b/src/app/valentina/dialogs/vwidgetdetails.cpp index 90d98b239..23d8d68e1 100644 --- a/src/app/valentina/dialogs/vwidgetdetails.cpp +++ b/src/app/valentina/dialogs/vwidgetdetails.cpp @@ -65,6 +65,22 @@ void VWidgetDetails::UpdateList() FillTable(m_data->DataDetails()); } +//--------------------------------------------------------------------------------------------------------------------- +void VWidgetDetails::SelectDetail(quint32 id) +{ + const int rowCount = ui->tableWidget->rowCount(); + for (int row = 0; row < rowCount; ++row) + { + QTableWidgetItem *item = ui->tableWidget->item(row, 0); + + if (item->data(Qt::UserRole).toUInt() == id) + { + ui->tableWidget->setCurrentItem(item); + return; + } + } +} + //--------------------------------------------------------------------------------------------------------------------- void VWidgetDetails::InLayoutStateChanged(int row, int column) { diff --git a/src/app/valentina/dialogs/vwidgetdetails.h b/src/app/valentina/dialogs/vwidgetdetails.h index 0d2658a65..4f08445ea 100644 --- a/src/app/valentina/dialogs/vwidgetdetails.h +++ b/src/app/valentina/dialogs/vwidgetdetails.h @@ -53,6 +53,7 @@ signals: public slots: void UpdateList(); + void SelectDetail(quint32 id); private slots: void InLayoutStateChanged(int row, int column); diff --git a/src/app/valentina/mainwindow.cpp b/src/app/valentina/mainwindow.cpp index 684814517..2f678b024 100644 --- a/src/app/valentina/mainwindow.cpp +++ b/src/app/valentina/mainwindow.cpp @@ -3511,6 +3511,7 @@ void MainWindow::InitDocksContain() detailsWidget = new VWidgetDetails(pattern, doc, this); connect(doc, &VPattern::FullUpdateFromFile, detailsWidget, &VWidgetDetails::UpdateList); connect(doc, &VPattern::UpdateInLayoutList, detailsWidget, &VWidgetDetails::UpdateList); + connect(doc, &VPattern::ShowDetail, detailsWidget, &VWidgetDetails::SelectDetail); connect(detailsWidget, &VWidgetDetails::Highlight, sceneDetails, &VMainGraphicsScene::HighlightItem); detailsWidget->setVisible(false); } diff --git a/src/libs/ifc/xml/vabstractpattern.cpp b/src/libs/ifc/xml/vabstractpattern.cpp index 535f8fc3d..2975f223b 100644 --- a/src/libs/ifc/xml/vabstractpattern.cpp +++ b/src/libs/ifc/xml/vabstractpattern.cpp @@ -1208,6 +1208,12 @@ void VAbstractPattern::CheckInLayoutList() emit UpdateInLayoutList(); } +//--------------------------------------------------------------------------------------------------------------------- +void VAbstractPattern::SelectedDetail(quint32 id) +{ + emit ShowDetail(id); +} + //--------------------------------------------------------------------------------------------------------------------- void VAbstractPattern::ToolExists(const quint32 &id) const { diff --git a/src/libs/ifc/xml/vabstractpattern.h b/src/libs/ifc/xml/vabstractpattern.h index e68299e53..ca4b8faef 100644 --- a/src/libs/ifc/xml/vabstractpattern.h +++ b/src/libs/ifc/xml/vabstractpattern.h @@ -292,6 +292,7 @@ signals: void SetEnabledGUI(bool enabled); void CheckLayout(); void UpdateInLayoutList(); + void ShowDetail(quint32 id); void SetCurrentPP(const QString &patterPiece); public slots: @@ -300,6 +301,7 @@ public slots: void NeedFullParsing(); void ClearScene(); void CheckInLayoutList(); + void SelectedDetail(quint32 id); protected: /** @brief nameActivDraw name current pattern peace. */ diff --git a/src/libs/vtools/tools/vtooldetail.cpp b/src/libs/vtools/tools/vtooldetail.cpp index 1cfcb324b..ccfbf855f 100644 --- a/src/libs/vtools/tools/vtooldetail.cpp +++ b/src/libs/vtools/tools/vtooldetail.cpp @@ -671,6 +671,7 @@ void VToolDetail::mousePressEvent(QGraphicsSceneMouseEvent *event) if (event->button() == Qt::LeftButton && event->type() != QEvent::GraphicsSceneMouseDoubleClick) { + doc->SelectedDetail(id); emit ChoosedTool(id, SceneObject::Detail); }