From f7e61d0c7734b99db0fcfd247dd5291d745dfc2b Mon Sep 17 00:00:00 2001 From: woblight Date: Fri, 13 Jul 2018 16:37:56 +0200 Subject: [PATCH] Add repair button --- AddonsPanel.qml | 7 +++++++ addon.cpp | 13 +++++++++++++ addon.h | 1 + icons/breeze/svg/document-edit-decrypt.svg | 13 +++++++++++++ qml.qrc | 1 + 5 files changed, 35 insertions(+) create mode 100644 icons/breeze/svg/document-edit-decrypt.svg diff --git a/AddonsPanel.qml b/AddonsPanel.qml index 0a52993..137eb4d 100644 --- a/AddonsPanel.qml +++ b/AddonsPanel.qml @@ -127,6 +127,13 @@ Page { x: -width id: addonMenu visible: false + MenuItem { + id: repairButton + text: qsTr("repair") + icon.name: "document-edit-decrypt" + onTriggered: addon.reset() + } + MenuItem { enabled: addon.status == Addon.Status.Ready id: deleteButton diff --git a/addon.cpp b/addon.cpp index 5b46d4d..14b14d5 100644 --- a/addon.cpp +++ b/addon.cpp @@ -472,6 +472,19 @@ void Addon::confirmFileRemove(bool confirmed) m_mutex.unlock(); } +void Addon::reset() +{ + removeSubfolders(); + delegate("Reset", [this](){ + git_reference *ref = nullptr; + git_repository_head(&ref, m_repo.get()); + git_object *obj = nullptr; + git_object_lookup(&obj, m_repo.get(), git_reference_target(ref), GIT_OBJ_ANY); + git_reset(m_repo.get(), obj, GIT_RESET_HARD, nullptr); + }); + unpackSubfolders(); +} + QStringList Addon::branches() const { return m_branches; diff --git a/addon.h b/addon.h index b2e8c66..4e8dc90 100644 --- a/addon.h +++ b/addon.h @@ -178,6 +178,7 @@ public slots: void unpackSubfolders(); void setFilesToRemove(QString filesToRemove); void confirmFileRemove(bool confirmed); + void reset(); }; Q_DECLARE_OPERATORS_FOR_FLAGS(Addon::GitStatus) diff --git a/icons/breeze/svg/document-edit-decrypt.svg b/icons/breeze/svg/document-edit-decrypt.svg new file mode 100644 index 0000000..9f643a9 --- /dev/null +++ b/icons/breeze/svg/document-edit-decrypt.svg @@ -0,0 +1,13 @@ + + + + + + diff --git a/qml.qrc b/qml.qrc index bb6b373..2da771e 100644 --- a/qml.qrc +++ b/qml.qrc @@ -20,5 +20,6 @@ icons/breeze/COPYING-ICONS icons/breeze/index.theme ColorPicker.qml + icons/breeze/svg/document-edit-decrypt.svg