diff options
author | Christian Stenger <[email protected]> | 2024-02-21 09:14:39 +0100 |
---|---|---|
committer | Christian Stenger <[email protected]> | 2024-02-21 09:23:50 +0000 |
commit | 370fb4d550dafd8ededf4b2ecde23d3f48cbcb46 (patch) | |
tree | 979a28a2fb56f6a53793d4499cc0cb981a5c070f | |
parent | 2fe085871beebcfd23ae17fe3867a7c2caa4935b (diff) |
Axivion: Open issue information semi-automatic
This patch adds another way of opening issue information.
Double clicking an issue on the issues table will now
open the related information automatically beside jumping
to the respective location.
The original way of using a button on the tool tip of the
issue's text mark is clumsy, but still present.
Change-Id: I7b0fcafb8b01675fc020f8cc8174121ba7f52adc
Reviewed-by: hjk <[email protected]>
-rw-r--r-- | src/plugins/axivion/axivionoutputpane.cpp | 31 | ||||
-rw-r--r-- | src/plugins/axivion/axivionplugin.cpp | 6 | ||||
-rw-r--r-- | src/plugins/axivion/axivionplugin.h | 1 |
3 files changed, 27 insertions, 11 deletions
diff --git a/src/plugins/axivion/axivionoutputpane.cpp b/src/plugins/axivion/axivionoutputpane.cpp index df8d87accdc..42046f78b14 100644 --- a/src/plugins/axivion/axivionoutputpane.cpp +++ b/src/plugins/axivion/axivionoutputpane.cpp @@ -189,28 +189,34 @@ void DashboardWidget::updateUi() class IssueTreeItem final : public StaticTreeItem { public: - IssueTreeItem(const QStringList &data, const QStringList &toolTips) + IssueTreeItem(const QString &id, const QStringList &data, const QStringList &toolTips) : StaticTreeItem(data, toolTips) + , m_id(id) {} void setLinks(const Links &links) { m_links = links; } bool setData(int column, const QVariant &value, int role) final { - if (role == BaseTreeView::ItemActivatedRole && !m_links.isEmpty()) { - // TODO for now only simple - just the first.. - Link link = m_links.first(); - Project *project = ProjectManager::startupProject(); - FilePath baseDir = project ? project->projectDirectory() : FilePath{}; - link.targetFilePath = baseDir.resolvePath(link.targetFilePath); - if (link.targetFilePath.exists()) - EditorManager::openEditorAt(link); + if (role == BaseTreeView::ItemActivatedRole) { + if (!m_links.isEmpty()) { + // TODO for now only simple - just the first.. + Link link = m_links.first(); + Project *project = ProjectManager::startupProject(); + FilePath baseDir = project ? project->projectDirectory() : FilePath{}; + link.targetFilePath = baseDir.resolvePath(link.targetFilePath); + if (link.targetFilePath.exists()) + EditorManager::openEditorAt(link); + } + if (!m_id.isEmpty()) + fetchIssueInfo(m_id); return true; } return StaticTreeItem::setData(column, value, role); } private: + const QString m_id; Links m_links; }; @@ -425,17 +431,20 @@ void IssuesWidget::addIssues(const Dto::IssueTableDto &dto) const std::vector<Dto::ColumnInfoDto> &tableColumns = m_currentTableInfo->columns; const std::vector<std::map<QString, Dto::Any>> &rows = dto.rows; for (const auto &row : rows) { + QString id; QStringList data; for (const auto &column : tableColumns) { const auto it = row.find(column.key); if (it != row.end()) { QString value = anyToSimpleString(it->second); - if (column.key == "id") + if (column.key == "id") { value.prepend(m_currentPrefix); + id = value; + } data << value; } } - IssueTreeItem *it = new IssueTreeItem(data, data); + IssueTreeItem *it = new IssueTreeItem(id, data, data); it->setLinks(linksForIssue(row)); m_issuesModel->rootItem()->appendChild(it); } diff --git a/src/plugins/axivion/axivionplugin.cpp b/src/plugins/axivion/axivionplugin.cpp index 1cd8c9fc140..6d6d5c98808 100644 --- a/src/plugins/axivion/axivionplugin.cpp +++ b/src/plugins/axivion/axivionplugin.cpp @@ -887,6 +887,12 @@ class AxivionPlugin final : public ExtensionSystem::IPlugin } }; +void fetchIssueInfo(const QString &id) +{ + QTC_ASSERT(dd, return); + dd->fetchIssueInfo(id); +} + } // Axivion::Internal #include "axivionplugin.moc" diff --git a/src/plugins/axivion/axivionplugin.h b/src/plugins/axivion/axivionplugin.h index 1d5245a5034..1d2ebe12129 100644 --- a/src/plugins/axivion/axivionplugin.h +++ b/src/plugins/axivion/axivionplugin.h @@ -72,6 +72,7 @@ bool handleCertificateIssue(); QIcon iconForIssue(const QString &prefix); QString anyToSimpleString(const Dto::Any &any); +void fetchIssueInfo(const QString &id); } // Axivion::Internal |