aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorChristian Stenger <[email protected]>2024-02-21 09:14:39 +0100
committerChristian Stenger <[email protected]>2024-02-21 09:23:50 +0000
commit370fb4d550dafd8ededf4b2ecde23d3f48cbcb46 (patch)
tree979a28a2fb56f6a53793d4499cc0cb981a5c070f
parent2fe085871beebcfd23ae17fe3867a7c2caa4935b (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.cpp31
-rw-r--r--src/plugins/axivion/axivionplugin.cpp6
-rw-r--r--src/plugins/axivion/axivionplugin.h1
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