From e6e28fd4814e1f513773288710e1bcb3cfad0028 Mon Sep 17 00:00:00 2001 From: "Felix (xq) Queißner" Date: Mon, 8 Jun 2020 20:27:06 +0200 Subject: Fixes bug with URL escaping, adds experimental text highlighting --- src/browsertab.cpp | 2 +- src/geminiclient.cpp | 2 +- src/geminirenderer.cpp | 44 ++++++++++++++++++++++++++++++++++++++++++-- src/settingsdialog.ui | 2 +- 4 files changed, 45 insertions(+), 5 deletions(-) (limited to 'src') diff --git a/src/browsertab.cpp b/src/browsertab.cpp index 4bbfa20..3f9f5bb 100644 --- a/src/browsertab.cpp +++ b/src/browsertab.cpp @@ -73,7 +73,7 @@ void BrowserTab::navigateTo(const QUrl &url, PushToHistory mode) this->timer.start(); this->current_location = url; - this->ui->url_bar->setText(url.toString()); + this->ui->url_bar->setText(url.toString(QUrl::FormattingOptions(QUrl::FullyEncoded))); if(not gemini_client.cancelRequest()) { QMessageBox::warning(this, "Kristall", "Failed to cancel running gemini request!"); diff --git a/src/geminiclient.cpp b/src/geminiclient.cpp index 6e63991..8117a4f 100644 --- a/src/geminiclient.cpp +++ b/src/geminiclient.cpp @@ -55,7 +55,7 @@ bool GeminiClient::cancelRequest() void GeminiClient::socketEncrypted() { - QString request = target_url.toString() + "\r\n"; + QString request = target_url.toString(QUrl::FormattingOptions(QUrl::FullyEncoded)) + "\r\n"; QByteArray request_bytes = request.toUtf8(); diff --git a/src/geminirenderer.cpp b/src/geminirenderer.cpp index a178b65..fd475ce 100644 --- a/src/geminirenderer.cpp +++ b/src/geminirenderer.cpp @@ -234,9 +234,49 @@ std::unique_ptr GeminiRenderer::render( { if(emit_fancy_text) { - qDebug() << "implement fancy text emission!"; + bool rendering_bold = false; + bool rendering_underlined = false; + + QTextCharFormat fmt = standard; + + for(int i = 0; i < line.length(); i += 1) + { + char c = line.at(i); + if(c == ' ') { + fmt = standard; + cursor.insertText(" "); + rendering_bold = false; + rendering_underlined = false; + } + else if(c == '*') { + if(rendering_bold) + cursor.insertText("*", fmt); + rendering_bold = not rendering_bold; + auto f = fmt.font(); + f.setBold(rendering_bold); + fmt.setFont(f); + if(rendering_bold) + cursor.insertText("*", fmt); + } + else if(c == '_') { + if(rendering_underlined) + cursor.insertText(" ", fmt); + rendering_underlined = not rendering_underlined; + auto f = fmt.font(); + fmt.setUnderlineStyle(rendering_underlined ? QTextCharFormat::SingleUnderline : QTextCharFormat::NoUnderline); + if(rendering_underlined) + cursor.insertText(" ", fmt); + } + else { + cursor.insertText(QString::fromUtf8(&c, 1), fmt); + } + } + + cursor.insertText("\n", standard); + } + else { + cursor.insertText(line + "\n", standard); } - cursor.insertText(line + "\n", standard); } } } diff --git a/src/settingsdialog.ui b/src/settingsdialog.ui index 23bebf7..2b8b967 100644 --- a/src/settingsdialog.ui +++ b/src/settingsdialog.ui @@ -146,7 +146,7 @@ - On + On (Experimental) textHighlightsBtnGroup -- cgit v1.2.3