requested fixes

This commit is contained in:
Szybet 2022-09-20 20:37:13 +02:00 committed by Nicolas Mailloux
parent ee4e910454
commit 7bfba36bf7

View file

@ -124,14 +124,14 @@ localLibraryWidget::localLibraryWidget(QWidget *parent) :
QTimer::singleShot(100, this, SLOT(setupDisplay())); QTimer::singleShot(100, this, SLOT(setupDisplay()));
if(checkconfig("/mnt/onboard/.adds/inkbox/.config/21-local_library/folders") == false) { if(checkconfig("/mnt/onboard/.adds/inkbox/.config/21-local_library/folders") == false) {
folderFeatureEnabled = true; folderFeatureEnabled = false;
ui->goUpBtn->hide(); ui->goUpBtn->hide();
ui->pathBtn->hide(); ui->pathBtn->hide();
ui->goUpBtn->deleteLater(); ui->goUpBtn->deleteLater();
ui->pathBtn->deleteLater(); ui->pathBtn->deleteLater();
} }
else { else {
folderFeatureEnabled = false; folderFeatureEnabled = true;
} }
} }
@ -165,6 +165,9 @@ void localLibraryWidget::setupDatabase() {
proc->start(prog, args); proc->start(prog, args);
proc->waitForFinished(-1); proc->waitForFinished(-1);
QJsonDocument jsonDocument = QJsonDocument::fromJson(readFile(global::localLibrary::rawDatabasePath).toUtf8()); QJsonDocument jsonDocument = QJsonDocument::fromJson(readFile(global::localLibrary::rawDatabasePath).toUtf8());
log("Database: \n" + jsonDocument.toJson(), className);
QFile::remove(global::localLibrary::rawDatabasePath); QFile::remove(global::localLibrary::rawDatabasePath);
proc->deleteLater(); proc->deleteLater();
@ -346,7 +349,9 @@ void localLibraryWidget::btnOpenBook(int buttonNumber) {
log("A folder was selected", className); log("A folder was selected", className);
QString directory = bookBtnArray[buttonNumber]->text(); QString directory = bookBtnArray[buttonNumber]->text();
log("Chosen directory is '" + directory + "'", className); 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); changePathAndRefresh(directory);
} }
} }
@ -388,11 +393,15 @@ void localLibraryWidget::setupDisplay() {
setupDatabase(); setupDatabase();
if(noBooksInDatabase == false) { if(noBooksInDatabase == false) {
// Prevent segmentation fault if a book was the last of its page // Prevent segmentation fault if a book was the last of its page
int pageToGo = currentPageNumber;
if(currentPageNumber > pagesNumber) { if(currentPageNumber > pagesNumber) {
setupBooksListToggle(currentPageNumber - 1); pageToGo = pageToGo - 1;
}
if(global::localLibrary::bookOptionsDialog::bookDeleted == true and folderFeatureEnabled == true) {
goToPage(pageToGo);
} }
else { else {
setupBooksListToggle(currentPageNumber); setupBooksListToggle(pageToGo);
} }
} }
else { else {
@ -401,6 +410,7 @@ void localLibraryWidget::setupDisplay() {
ui->pageNumberLabel->setText("1 <i>of</i> 1"); ui->pageNumberLabel->setText("1 <i>of</i> 1");
ui->stackedWidget->setCurrentIndex(1); ui->stackedWidget->setCurrentIndex(1);
} }
global::localLibrary::bookOptionsDialog::bookDeleted = false;
} }
void localLibraryWidget::showToast(QString messageToDisplay) { 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); 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); bookOptionsDialog * bookOptionsDialogWindow = new bookOptionsDialog(this);
QObject::connect(bookOptionsDialogWindow, &bookOptionsDialog::openLocalBookInfoDialog, this, &localLibraryWidget::openLocalBookInfoDialog); QObject::connect(bookOptionsDialogWindow, &bookOptionsDialog::openLocalBookInfoDialog, this, &localLibraryWidget::openLocalBookInfoDialog);
QObject::connect(bookOptionsDialogWindow, &bookOptionsDialog::showToast, this, &localLibraryWidget::showToast); QObject::connect(bookOptionsDialogWindow, &bookOptionsDialog::showToast, this, &localLibraryWidget::showToast);
@ -448,7 +459,6 @@ void localLibraryWidget::openBookOptionsDialog(int pseudoBookID) {
void localLibraryWidget::handlePossibleBookDeletion() { void localLibraryWidget::handlePossibleBookDeletion() {
if(global::localLibrary::bookOptionsDialog::bookDeleted == true) { if(global::localLibrary::bookOptionsDialog::bookDeleted == true) {
QTimer::singleShot(3100, this, [&]() { QTimer::singleShot(3100, this, [&]() {
global::localLibrary::bookOptionsDialog::bookDeleted = false;
global::toast::modalToast = true; global::toast::modalToast = true;
global::toast::indefiniteToast = true; global::toast::indefiniteToast = true;
showToast("Generating database"); showToast("Generating database");
@ -465,7 +475,7 @@ void localLibraryWidget::openLocalBookInfoDialog() {
} }
void localLibraryWidget::setupBooksListToggle(int pageNumber) { void localLibraryWidget::setupBooksListToggle(int pageNumber) {
if(checkconfig("/mnt/onboard/.adds/inkbox/.config/21-local_library/folders") == true) { if(folderFeatureEnabled == true) {
setupBooksListFolders(pageNumber); setupBooksListFolders(pageNumber);
} }
else { else {
@ -474,7 +484,7 @@ void localLibraryWidget::setupBooksListToggle(int pageNumber) {
} }
void localLibraryWidget::setupBooksListFolders(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); QStringList dirList = QDir(pathForFolders).entryList(QDir::Dirs | QDir::NoDotAndDotDot, QDir::Name);
log("Full directory list: "+ dirList.join(","), className); log("Full directory list: "+ dirList.join(","), className);
@ -653,6 +663,7 @@ void localLibraryWidget::calculateMaximumPagesNumberForFolders() {
foreach (int number, booksListForPathIndex) { foreach (int number, booksListForPathIndex) {
list.append(QString::number(number)); list.append(QString::number(number));
} }
log("bookListForPathIndex is: " + list.join(","), className);
directoryListCount = QDir(pathForFolders).entryList(QDir::Dirs | QDir::NoDotAndDotDot, QDir::Name).count(); directoryListCount = QDir(pathForFolders).entryList(QDir::Dirs | QDir::NoDotAndDotDot, QDir::Name).count();
log("Directories count in directory: " + QString::number(directoryListCount), className); log("Directories count in directory: " + QString::number(directoryListCount), className);
@ -718,6 +729,7 @@ void localLibraryWidget::changePathAndRefresh(QString directory) {
pathForFolders = temporaryPathForFolders; pathForFolders = temporaryPathForFolders;
calculateMaximumPagesNumberForFolders(); calculateMaximumPagesNumberForFolders();
bookIndexVector = 0; bookIndexVector = 0;
ui->goUpBtn->setEnabled(true);
goToPage(1); goToPage(1);
} }
else { else {