From d35fc1ff0631d144c9a629d78c3c3ecfe3b09254 Mon Sep 17 00:00:00 2001 From: Veloman Yunkan Date: Fri, 3 May 2024 16:23:33 +0200 Subject: [PATCH] Rewrote context menu setup using book states --- src/contentmanager.cpp | 29 +++++++++++++++++++---------- 1 file changed, 19 insertions(+), 10 deletions(-) diff --git a/src/contentmanager.cpp b/src/contentmanager.cpp index d8d037b..71f9d9e 100644 --- a/src/contentmanager.cpp +++ b/src/contentmanager.cpp @@ -218,15 +218,19 @@ void ContentManager::onCustomContextMenu(const QPoint &point) QAction menuCancelBook(gt("cancel-download"), this); QAction menuOpenFolder(gt("open-folder"), this); - if (const auto download = bookNode->getDownloadState()) { - if (download->paused) { - contextMenu.addAction(&menuResumeBook); - } else { - contextMenu.addAction(&menuPauseBook); - } + switch ( getBookState(id) ) { + case BookState::DOWNLOAD_PAUSED: + contextMenu.addAction(&menuResumeBook); contextMenu.addAction(&menuCancelBook); - } else { - try { + break; + + case BookState::DOWNLOADING: + contextMenu.addAction(&menuPauseBook); + contextMenu.addAction(&menuCancelBook); + break; + + case BookState::AVAILABLE_LOCALLY_AND_HEALTHY: + { const auto book = mp_library->getBookById(id); auto bookPath = QString::fromStdString(book.getPath()); contextMenu.addAction(&menuOpenBook); @@ -235,9 +239,14 @@ void ContentManager::onCustomContextMenu(const QPoint &point) connect(&menuOpenFolder, &QAction::triggered, [=]() { openFileLocation(bookPath, mp_view); }); - } catch (...) { - contextMenu.addAction(&menuDownloadBook); + break; } + + case BookState::AVAILABLE_ONLINE: + contextMenu.addAction(&menuDownloadBook); + break; + + default: break; } connect(&menuDeleteBook, &QAction::triggered, [=]() {