aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorFelix (xq) Queißner <git@mq32.de>2020-06-08 20:27:06 +0200
committerFelix (xq) Queißner <git@mq32.de>2020-06-08 20:27:06 +0200
commite6e28fd4814e1f513773288710e1bcb3cfad0028 (patch)
tree4c5274fb3dc5f14a3332de456a5d5213c8e7cdaf /src
parent51f46dce66ac660507dc7abad5506650bc863d7f (diff)
downloadkristall-e6e28fd4814e1f513773288710e1bcb3cfad0028.tar.gz
Fixes bug with URL escaping, adds experimental text highlighting
Diffstat (limited to 'src')
-rw-r--r--src/browsertab.cpp2
-rw-r--r--src/geminiclient.cpp2
-rw-r--r--src/geminirenderer.cpp44
-rw-r--r--src/settingsdialog.ui2
4 files changed, 45 insertions, 5 deletions
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<GeminiDocument> 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 @@
<item>
<widget class="QRadioButton" name="texthl_on">
<property name="text">
- <string>On</string>
+ <string>On (Experimental)</string>
</property>
<attribute name="buttonGroup">
<string notr="true">textHighlightsBtnGroup</string>