Reader: Fix major regression bug caused by commit e2c170b

This bug prevented the user from applying new font sizes, margins or line spacings to an opened book.
TODO: Fix ugly UI issue with highlighting
This commit is contained in:
Nicolas Mailloux 2022-10-25 21:54:06 -04:00
parent ad017083ad
commit db9dbb24ec

View file

@ -1297,6 +1297,9 @@ void reader::on_alignJustifyBtn_clicked()
} }
void reader::setTextProperties(int alignment, int lineSpacing, int margins, QString font, int fontSize) { void reader::setTextProperties(int alignment, int lineSpacing, int margins, QString font, int fontSize) {
// Don't try to improve this
// I have spent more time on it than I would care to admit
// Alignment // Alignment
/* /*
* 0 - Left * 0 - Left
@ -1305,31 +1308,8 @@ void reader::setTextProperties(int alignment, int lineSpacing, int margins, QStr
* 3 - Justify * 3 - Justify
*/ */
// Don't try to improve this // Selection color
// I have spent more time on it than I would care to admit ui->text->setStyleSheet("QTextEdit { selection-background-color: white; color: white; }");
setLineSpacing(lineSpacing, false);
ui->lineSpacingSlider->setValue(lineSpacing);
setMargins(margins, false);
ui->marginsSlider->setValue(margins);
QTextCursor cursor = ui->text->textCursor();
textDialogLock = true;
ui->text->setStyleSheet("QTextEdit { selection-background-color: white }");
// Kudos to Qt for not implementing the opposite of the following function /)_-)
ui->text->selectAll();
if(alignment == 0) {
ui->text->setAlignment(Qt::AlignLeft);
}
else if(alignment == 1) {
ui->text->setAlignment(Qt::AlignHCenter);
}
else if(alignment == 2) {
ui->text->setAlignment(Qt::AlignRight);
}
else if(alignment == 3) {
ui->text->setAlignment(Qt::AlignJustify);
}
// Font // Font
{ {
if(font == "Crimson Pro") { if(font == "Crimson Pro") {
@ -1411,10 +1391,6 @@ void reader::setTextProperties(int alignment, int lineSpacing, int margins, QStr
writeFile(".config/04-book/font", font); writeFile(".config/04-book/font", font);
} }
} }
// Font size
ui->text->setFontPointSize(fontSize);
ui->text->setTextCursor(cursor);
textDialogLock = false;
// Highlighting // Highlighting
QString htmlText = global::reader::currentViewportText; QString htmlText = global::reader::currentViewportText;
@ -1427,17 +1403,44 @@ void reader::setTextProperties(int alignment, int lineSpacing, int margins, QStr
} }
else { else {
QString highlight = jsonObject.value(key).toString(); QString highlight = jsonObject.value(key).toString();
textDialogLock = true;
if(htmlText.contains(highlight)) { if(htmlText.contains(highlight)) {
htmlText.replace(highlight, "<span style=\" background-color:#bbbbbb;\">" + highlight + "</span>"); htmlText.replace(highlight, "<span style=\" background-color:#bbbbbb;\">" + highlight + "</span>");
} }
textDialogLock = false;
} }
keyCount++; keyCount++;
} }
htmlText.replace(QRegExp("font-family:'.*';"), ""); htmlText.replace(QRegExp("font-family:'.*';"), "");
ui->text->setStyleSheet("QTextEdit { selection-background-color: black }");
ui->text->setHtml(htmlText); ui->text->setHtml(htmlText);
// Line spacing, margins
setLineSpacing(lineSpacing, false);
ui->lineSpacingSlider->setValue(lineSpacing);
setMargins(margins, false);
ui->marginsSlider->setValue(margins);
textDialogLock = true;
QTextCursor cursor = ui->text->textCursor();
// Kudos to Qt for not implementing the opposite of the following function /)_-)
ui->text->selectAll();
// Text alignment
if(alignment == 0) {
ui->text->setAlignment(Qt::AlignLeft);
}
else if(alignment == 1) {
ui->text->setAlignment(Qt::AlignHCenter);
}
else if(alignment == 2) {
ui->text->setAlignment(Qt::AlignRight);
}
else if(alignment == 3) {
ui->text->setAlignment(Qt::AlignJustify);
}
// Font size
ui->text->setFontPointSize(fontSize);
ui->text->setTextCursor(cursor);
// Selection color
ui->text->setStyleSheet("QTextEdit { selection-background-color: black; color: black; }");
textDialogLock = false;
} }
void reader::menubar_show() { void reader::menubar_show() {