mirror of
https://github.com/Quill-OS/quill.git
synced 2024-12-25 15:17:21 -08:00
175 lines
6.7 KiB
C++
175 lines
6.7 KiB
C++
#include "bookinfodialog.h"
|
|
#include "ui_bookinfodialog.h"
|
|
#include "functions.h"
|
|
|
|
#include <QScreen>
|
|
|
|
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("<b>Title:</b> " + title + "<br>");
|
|
}
|
|
if(!author.isEmpty()) {
|
|
bookInfo.append("<b>Author:</b> " + author + "<br>");
|
|
}
|
|
if(!publicationDate.isEmpty()) {
|
|
bookInfo.append("<b>Publication date:</b> " + publicationDate + "<br>");
|
|
}
|
|
if(!path.isEmpty()) {
|
|
bookInfo.append("<b>Path:</b> " + path + "<br>");
|
|
}
|
|
|
|
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;
|
|
}
|
|
}
|
|
}
|
|
}
|