From 7bfba36bf736b2fbc0ad6f74a7b3a4c3406b7928 Mon Sep 17 00:00:00 2001 From: Szybet <53944559+Szybet@users.noreply.github.com> Date: Tue, 20 Sep 2022 20:37:13 +0200 Subject: [PATCH] requested fixes --- src/localLibrary/locallibrarywidget.cpp | 30 +++++++++++++++++-------- 1 file changed, 21 insertions(+), 9 deletions(-) diff --git a/src/localLibrary/locallibrarywidget.cpp b/src/localLibrary/locallibrarywidget.cpp index bf0c520..e134913 100644 --- a/src/localLibrary/locallibrarywidget.cpp +++ b/src/localLibrary/locallibrarywidget.cpp @@ -124,14 +124,14 @@ localLibraryWidget::localLibraryWidget(QWidget *parent) : QTimer::singleShot(100, this, SLOT(setupDisplay())); if(checkconfig("/mnt/onboard/.adds/inkbox/.config/21-local_library/folders") == false) { - folderFeatureEnabled = true; + folderFeatureEnabled = false; ui->goUpBtn->hide(); ui->pathBtn->hide(); ui->goUpBtn->deleteLater(); ui->pathBtn->deleteLater(); } else { - folderFeatureEnabled = false; + folderFeatureEnabled = true; } } @@ -165,6 +165,9 @@ void localLibraryWidget::setupDatabase() { proc->start(prog, args); proc->waitForFinished(-1); QJsonDocument jsonDocument = QJsonDocument::fromJson(readFile(global::localLibrary::rawDatabasePath).toUtf8()); + + log("Database: \n" + jsonDocument.toJson(), className); + QFile::remove(global::localLibrary::rawDatabasePath); proc->deleteLater(); @@ -346,7 +349,9 @@ void localLibraryWidget::btnOpenBook(int buttonNumber) { log("A folder was selected", className); QString directory = bookBtnArray[buttonNumber]->text(); log("Chosen directory is '" + directory + "'", className); - ui->goUpBtn->setEnabled(true); + // https://stackoverflow.com/questions/2799379/is-there-an-easy-way-to-strip-html-from-a-qstring-in-qt + // This can cause problems if someone names its directory as html tags, my solution: Stop. Anki which is a big project also doesnt cares about this + directory.remove(QRegExp("<[^>]*>")); changePathAndRefresh(directory); } } @@ -388,11 +393,15 @@ void localLibraryWidget::setupDisplay() { setupDatabase(); if(noBooksInDatabase == false) { // Prevent segmentation fault if a book was the last of its page + int pageToGo = currentPageNumber; if(currentPageNumber > pagesNumber) { - setupBooksListToggle(currentPageNumber - 1); + pageToGo = pageToGo - 1; + } + if(global::localLibrary::bookOptionsDialog::bookDeleted == true and folderFeatureEnabled == true) { + goToPage(pageToGo); } else { - setupBooksListToggle(currentPageNumber); + setupBooksListToggle(pageToGo); } } else { @@ -401,6 +410,7 @@ void localLibraryWidget::setupDisplay() { ui->pageNumberLabel->setText("1 of 1"); ui->stackedWidget->setCurrentIndex(1); } + global::localLibrary::bookOptionsDialog::bookDeleted = false; } void localLibraryWidget::showToast(QString messageToDisplay) { @@ -434,7 +444,8 @@ void localLibraryWidget::openBookOptionsDialog(int pseudoBookID) { } log("Opening book options dialog for book with pseudo-ID " + QString::number(pseudoBookID) + ", ID " + QString::number(bookID), className); - global::localLibrary::bookOptionsDialog::bookID = bookID; + // here should go id because of idList.at(pseudoBookID - 1); + global::localLibrary::bookOptionsDialog::bookID = id; bookOptionsDialog * bookOptionsDialogWindow = new bookOptionsDialog(this); QObject::connect(bookOptionsDialogWindow, &bookOptionsDialog::openLocalBookInfoDialog, this, &localLibraryWidget::openLocalBookInfoDialog); QObject::connect(bookOptionsDialogWindow, &bookOptionsDialog::showToast, this, &localLibraryWidget::showToast); @@ -448,7 +459,6 @@ void localLibraryWidget::openBookOptionsDialog(int pseudoBookID) { void localLibraryWidget::handlePossibleBookDeletion() { if(global::localLibrary::bookOptionsDialog::bookDeleted == true) { QTimer::singleShot(3100, this, [&]() { - global::localLibrary::bookOptionsDialog::bookDeleted = false; global::toast::modalToast = true; global::toast::indefiniteToast = true; showToast("Generating database"); @@ -465,7 +475,7 @@ void localLibraryWidget::openLocalBookInfoDialog() { } void localLibraryWidget::setupBooksListToggle(int pageNumber) { - if(checkconfig("/mnt/onboard/.adds/inkbox/.config/21-local_library/folders") == true) { + if(folderFeatureEnabled == true) { setupBooksListFolders(pageNumber); } else { @@ -474,7 +484,7 @@ void localLibraryWidget::setupBooksListToggle(int pageNumber) { } void localLibraryWidget::setupBooksListFolders(int pageNumber) { - log("Showing folders", className); + log("Showing folders for page: " + QString::number(pageNumber), className); QStringList dirList = QDir(pathForFolders).entryList(QDir::Dirs | QDir::NoDotAndDotDot, QDir::Name); log("Full directory list: "+ dirList.join(","), className); @@ -653,6 +663,7 @@ void localLibraryWidget::calculateMaximumPagesNumberForFolders() { foreach (int number, booksListForPathIndex) { list.append(QString::number(number)); } + log("bookListForPathIndex is: " + list.join(","), className); directoryListCount = QDir(pathForFolders).entryList(QDir::Dirs | QDir::NoDotAndDotDot, QDir::Name).count(); log("Directories count in directory: " + QString::number(directoryListCount), className); @@ -718,6 +729,7 @@ void localLibraryWidget::changePathAndRefresh(QString directory) { pathForFolders = temporaryPathForFolders; calculateMaximumPagesNumberForFolders(); bookIndexVector = 0; + ui->goUpBtn->setEnabled(true); goToPage(1); } else {