#include "bookinfodialog.h" #include "ui_bookinfodialog.h" #include "functions.h" #include bookInfoDialog::bookInfoDialog(QWidget *parent) : QDialog(parent), ui(new Ui::bookInfoDialog) { ui->setupUi(this); // Stylesheet QFile stylesheetFile("/mnt/onboard/.adds/inkbox/eink.qss"); stylesheetFile.open(QFile::ReadOnly); this->setStyleSheet(stylesheetFile.readAll()); stylesheetFile.close(); ui->closeBtn->setProperty("type", "borderless"); ui->closeBtn->setText(""); ui->closeBtn->setIcon(QIcon(":/resources/close.png")); ui->bookCoverLabel->setText(""); ui->getBtn->setStyleSheet("background: lightGrey; font-size: 9pt; padding: 8px"); // Getting the screen's size sW = QGuiApplication::screens()[0]->size().width(); sH = QGuiApplication::screens()[0]->size().height(); // Setting icons up stdIconWidth = sW / 4; stdIconHeight = sH / 4; if(global::bookInfoDialog::localInfoDialog == false) { if(global::library::isLatestBook == true) { QString bookNumberQstr = QString::number(global::library::latestBookNumber); QString coverPath = "/mnt/onboard/onboard/.inkbox/gutenberg-data/latest-books/"; coverPath = coverPath.append(bookNumberQstr); coverPath = coverPath.append("/cover.jpg"); QString idPath = "/mnt/onboard/onboard/.inkbox/gutenberg-data/latest-books/"; idPath = idPath.append(bookNumberQstr); idPath = idPath.append("/id"); global::library::bookId = readFile(idPath).toULong(); QPixmap coverPixmap(coverPath); QPixmap scaledCoverPixmap = coverPixmap.scaled(stdIconWidth, stdIconHeight, Qt::KeepAspectRatio); ui->bookCoverLabel->setPixmap(scaledCoverPixmap); global::library::isLatestBook = false; ui->bookTitleLabel->setText(global::library::bookTitle); } else { ui->bookTitleLabel->setText(global::library::bookTitle); QDir gutenbergDir; gutenbergDir.mkpath("/inkbox/gutenberg"); string_writeconfig("/inkbox/gutenberg/bookid", QString::number(global::library::bookId).toStdString()); string_writeconfig("/opt/ibxd", "gutenberg_get_cover\n"); while(true) { if(QFile::exists("/inkbox/gutenberg/getCoverDone")) { if(checkconfig("/inkbox/gutenberg/getCoverDone") == true) { QPixmap coverPixmap("/inkbox/gutenberg/book_cover.jpg"); QPixmap scaledCoverPixmap = coverPixmap.scaled(stdIconWidth, stdIconHeight, Qt::KeepAspectRatio); ui->bookCoverLabel->setPixmap(scaledCoverPixmap); QFile::remove("/inkbox/gutenberg/getCoverDone"); break; } else { QPixmap coverPixmap(":/resources/cover_unavailable.png"); QPixmap scaledCoverPixmap = coverPixmap.scaled(stdIconWidth, stdIconHeight, Qt::KeepAspectRatio); ui->bookCoverLabel->setPixmap(scaledCoverPixmap); QFile::remove("/inkbox/gutenberg/getCoverDone"); break; } } } } log("Setting up book info dialog, ID: " + QString::number(global::library::bookId) + ", title: " + global::library::bookTitle, className); } else { QJsonObject bookJsonObject = getBookMetadata(global::localLibrary::bookOptionsDialog::bookID); QString bookInfo; QString title = bookJsonObject["Title"].toString(); QString author = bookJsonObject["Author"].toString(); QString publicationDate = bookJsonObject["PublicationDate"].toString(); QString path = bookJsonObject["BookPath"].toString(); if(!title.isEmpty()) { bookInfo.append("Title: " + title + "
"); } if(!author.isEmpty()) { bookInfo.append("Author: " + author + "
"); } if(!publicationDate.isEmpty()) { bookInfo.append("Publication date: " + publicationDate + "
"); } if(!path.isEmpty()) { bookInfo.append("Path: " + path + "
"); } global::text::textBrowserContents = bookInfo; textwidget * textwidgetWindow = new textwidget(this); ui->stackedWidget->insertWidget(1, textwidgetWindow); ui->stackedWidget->setCurrentIndex(1); } QRect screenGeometry = QGuiApplication::screens()[0]->geometry(); { int wx = screenGeometry.width(); int x = wx - 25; int y = this->height() * determineYIncrease(); this->setFixedWidth(x); this->setFixedHeight(y); this->adjustSize(); } // Centering dialog int x = (screenGeometry.width() - this->width()) / 2; int y = (screenGeometry.height() - this->height()) / 2; this->move(x, y); } bookInfoDialog::~bookInfoDialog() { delete ui; } void bookInfoDialog::on_closeBtn_clicked() { global::library::bookTitle = ""; global::bookInfoDialog::localInfoDialog = false; bookInfoDialog::close(); } void bookInfoDialog::on_getBtn_clicked() { QDir gutenbergDir; gutenbergDir.mkpath("/inkbox/gutenberg"); string_writeconfig("/inkbox/gutenberg/bookid", QString::number(global::library::bookId).toStdString()); string_writeconfig("/inkbox/gutenberg/booktitle", global::library::bookTitle.toStdString()); string_writeconfig("/opt/ibxd", "gutenberg_get_book\n"); global::toast::modalToast = true; global::toast::indefiniteToast = true; log("Downloading book, ID: " + QString::number(global::library::bookId) + ", title: " + global::library::bookTitle, className); emit showToast("Downloading"); QTimer::singleShot(500, this, SLOT(waitForBookFetch())); } void bookInfoDialog::waitForBookFetch() { while(true) { if(QFile::exists("/inkbox/gutenberg/getBookDone")) { if(checkconfig("/inkbox/gutenberg/getBookDone") == true) { emit closeIndefiniteToast(); QString function = __func__; log(function + ": Download successful", className); emit showToast("Download successful"); QFile::remove("/inkbox/gutenberg/getBookDone"); QFile::remove(global::localLibrary::databasePath); break; } else { emit closeIndefiniteToast(); QString function = __func__; log(function + ": Download failed", className); emit showToast("Download failed"); QFile::remove("/inkbox/gutenberg/getBookDone"); break; } } } }