diff --git a/AddonsPanel.qml b/AddonsPanel.qml index 53a2670..47b7efa 100644 --- a/AddonsPanel.qml +++ b/AddonsPanel.qml @@ -147,6 +147,15 @@ Page { } hoverEnabled: true } + MenuItem { + id: websiteButton + text: qsTr("website") + icon.name: "internet-services-symbolic" + onTriggered: { + Qt.openUrlExternally(addon.getUrl()) + } + hoverEnabled: true + } MenuItem { id: repairButton diff --git a/addon.cpp b/addon.cpp index b34ba13..a721a6a 100644 --- a/addon.cpp +++ b/addon.cpp @@ -640,6 +640,16 @@ QString Addon::path() const return m_path; } +QUrl Addon::getUrl() const +{ + git_remote *remote = nullptr; + if (git_remote_lookup(&remote, m_repo.get(), m_remote.toLocal8Bit())) + return QUrl(); + auto url = QUrl(git_remote_url(remote)); + git_remote_free(remote); + return url; +} + void Addon::closeRepo() { m_repo.reset(); diff --git a/addon.h b/addon.h index 09b510a..bc3fe37 100644 --- a/addon.h +++ b/addon.h @@ -25,6 +25,7 @@ #include #include #include "utils.h" +#include class git_repository; class git_reference; @@ -123,6 +124,8 @@ public: QString path() const; + Q_INVOKABLE QUrl getUrl() const; + private: Status m_status; diff --git a/icons/breeze/svg/internet-services-symbolic.svg b/icons/breeze/svg/internet-services-symbolic.svg new file mode 100644 index 0000000..543cc55 --- /dev/null +++ b/icons/breeze/svg/internet-services-symbolic.svg @@ -0,0 +1,16 @@ + + + + + + + +