diff --git a/src/adapters/controllers/library_controller.cpp b/src/adapters/controllers/library_controller.cpp index a0702afb0..f1cc6a0d7 100644 --- a/src/adapters/controllers/library_controller.cpp +++ b/src/adapters/controllers/library_controller.cpp @@ -125,7 +125,7 @@ void LibraryController::syncWithServer() } int LibraryController::addBook(const QString& path, bool allowDuplicates, - int projectGutenbergId) + int projectGutenbergId, QString parentFolder) { auto localPath = QUrl(path).toLocalFile(); QFileInfo fileInfo(localPath); @@ -134,7 +134,7 @@ int LibraryController::addBook(const QString& path, bool allowDuplicates, QApplication::setOverrideCursor(Qt::WaitCursor); auto result = m_libraryService->addBook(localPath, allowDuplicates, - projectGutenbergId); + projectGutenbergId, parentFolder); QApplication::restoreOverrideCursor(); emit addingBookFinished( diff --git a/src/adapters/controllers/library_controller.hpp b/src/adapters/controllers/library_controller.hpp index 3cda076ba..4672c44b0 100644 --- a/src/adapters/controllers/library_controller.hpp +++ b/src/adapters/controllers/library_controller.hpp @@ -20,7 +20,7 @@ class ADAPTERS_EXPORT LibraryController : public ILibraryController LibraryController(application::ILibraryService* bookService); int addBook(const QString& path, bool allowDuplicates = false, - int projectGutenbergId = 0) override; + int projectGutenbergId = 0, QString parentFolder = "") override; int deleteBook(const QString& uuid) override; int deleteAllBooks() override; int uninstallBook(const QString& uuid) override; diff --git a/src/adapters/interfaces/controllers/i_library_controller.hpp b/src/adapters/interfaces/controllers/i_library_controller.hpp index f5fef88a7..60eeeaff8 100644 --- a/src/adapters/interfaces/controllers/i_library_controller.hpp +++ b/src/adapters/interfaces/controllers/i_library_controller.hpp @@ -57,7 +57,8 @@ class ADAPTERS_EXPORT ILibraryController : public QObject Q_INVOKABLE virtual void syncWithServer() = 0; Q_INVOKABLE virtual int addBook(const QString& path, bool allowDuplicates = false, - int projectGutenbergId = 0) = 0; + int projectGutenbergId = 0, + QString parentFolder = "") = 0; Q_INVOKABLE virtual int deleteBook(const QString& uuid) = 0; Q_INVOKABLE virtual int deleteAllBooks() = 0; Q_INVOKABLE virtual int uninstallBook(const QString& uuid) = 0; diff --git a/src/application/interfaces/services/i_library_service.hpp b/src/application/interfaces/services/i_library_service.hpp index 7037d5785..582e30845 100644 --- a/src/application/interfaces/services/i_library_service.hpp +++ b/src/application/interfaces/services/i_library_service.hpp @@ -24,7 +24,8 @@ class APPLICATION_EXPORT ILibraryService : public QObject virtual void downloadBooks() = 0; virtual BookOperationStatus addBook(const QString& filePath, bool allowDuplicates, - int projectGutenbergId) = 0; + int projectGutenbergId, + QString parentFolder = "") = 0; virtual BookOperationStatus deleteBook(const QUuid& uuid) = 0; virtual BookOperationStatus deleteAllBooks() = 0; virtual BookOperationStatus uninstallBook(const QUuid& uuid) = 0; diff --git a/src/application/services/library_service.cpp b/src/application/services/library_service.cpp index 7b523a621..b56b3d19e 100644 --- a/src/application/services/library_service.cpp +++ b/src/application/services/library_service.cpp @@ -111,7 +111,8 @@ void LibraryService::downloadBooks() BookOperationStatus LibraryService::addBook(const QString& filePath, bool allowDuplicates, - int projectGutenbergId) + int projectGutenbergId, + QString parentFolder) { auto success = m_bookMetadataHelper->setup(filePath); if(!success) @@ -147,6 +148,7 @@ BookOperationStatus LibraryService::addBook(const QString& filePath, book.setHasCover(true); book.setCoverPath(coverPath); book.setProjectGutenbergId(projectGutenbergId); + book.setParentFolderId(QUuid(parentFolder)); addBookToLibrary(book); diff --git a/src/application/services/library_service.hpp b/src/application/services/library_service.hpp index 3241d5a33..516c46d13 100644 --- a/src/application/services/library_service.hpp +++ b/src/application/services/library_service.hpp @@ -21,7 +21,8 @@ class APPLICATION_EXPORT LibraryService : public ILibraryService void downloadBooks() override; BookOperationStatus addBook(const QString& filePath, bool allowDuplicates = false, - int projectGutenbergId = 0) override; + int projectGutenbergId = 0, + QString parentFolder = "") override; BookOperationStatus deleteBook(const QUuid& uuid) override; BookOperationStatus deleteAllBooks() override; BookOperationStatus uninstallBook(const QUuid& uuid) override; diff --git a/src/presentation/desktop/homePage/MHomePage.qml b/src/presentation/desktop/homePage/MHomePage.qml index 708901fbb..df0dabd15 100644 --- a/src/presentation/desktop/homePage/MHomePage.qml +++ b/src/presentation/desktop/homePage/MHomePage.qml @@ -758,7 +758,8 @@ Page { } onLeftButtonClicked: LibraryController.addBook( - internal.lastAddedBookPath, true) + internal.lastAddedBookPath, true, 0, + LibraryController.libraryModel.folder) } MWarningPopup { @@ -863,13 +864,14 @@ Page { // adding is resumed by calling continueAddingBooks(). function addBooks(container) { internal.booksCurrentlyAdding = container - for (var i = container.length - 1; i >= 0; i--) { - internal.lastAddedBookPath = container[i] + for (var i = internal.booksCurrentlyAdding.length - 1; i >= 0; i--) { + internal.lastAddedBookPath = internal.booksCurrentlyAdding[i] let result = LibraryController.addBook( - internal.lastAddedBookPath) + internal.lastAddedBookPath, false, 0, + LibraryController.libraryModel.folder) // Remove the already added book - container.splice(i, 1) + internal.booksCurrentlyAdding.splice(i, 1) if (result === BookOperationStatus.OpeningBookFailed) { unsupportedFilePopup.open()