diff --git a/resources/i18n/en.json b/resources/i18n/en.json index 60b02537d..c84e9bdf6 100644 --- a/resources/i18n/en.json +++ b/resources/i18n/en.json @@ -148,5 +148,6 @@ "open-book": "Open book", "download-book": "Download book", "pause-download": "Pause download", - "resume-download": "Resume download" + "resume-download": "Resume download", + "open-folder": "Open folder" } diff --git a/src/contentmanager.cpp b/src/contentmanager.cpp index a465b9b21..d29a173e4 100644 --- a/src/contentmanager.cpp +++ b/src/contentmanager.cpp @@ -21,6 +21,7 @@ #include "kiwixconfirmbox.h" #include #include "contentmanagerheader.h" +#include ContentManager::ContentManager(Library* library, kiwix::Downloader* downloader, QObject *parent) : QObject(parent), @@ -99,6 +100,7 @@ void ContentManager::onCustomContextMenu(const QPoint &point) QAction menuPauseBook(gt("pause-download"), this); QAction menuResumeBook(gt("resume-download"), this); QAction menuCancelBook(gt("cancel-download"), this); + QAction menuOpenFolder(gt("open-folder"), this); if (bookNode->isDownloading()) { if (bookNode->getDownloadInfo().paused) { @@ -110,8 +112,14 @@ void ContentManager::onCustomContextMenu(const QPoint &point) } else { try { const auto book = KiwixApp::instance()->getLibrary()->getBookById(id); + auto bookPath = QString::fromStdString(book.getPath()); contextMenu.addAction(&menuOpenBook); contextMenu.addAction(&menuDeleteBook); + contextMenu.addAction(&menuOpenFolder); + connect(&menuOpenFolder, &QAction::triggered, [=]() { + QFileInfo fileInfo(bookPath); + QDesktopServices::openUrl(fileInfo.absoluteDir().absolutePath()); + }); } catch (...) { contextMenu.addAction(&menuDownloadBook); }