aboutsummaryrefslogtreecommitdiff
path: root/browsertab.cpp
diff options
context:
space:
mode:
authorFelix (xq) Queißner <git@mq32.de>2020-06-05 10:13:45 +0200
committerFelix (xq) Queißner <git@mq32.de>2020-06-05 10:13:45 +0200
commit3508f8a2a0867a886ceca9139ce0dcae2405ff29 (patch)
treed20449727b2bd7b99a3f76870349af5db96d5af0 /browsertab.cpp
parentc0d62ee7beaa0a800e8fbc6edf2d0086ffd3e448 (diff)
downloadkristall-3508f8a2a0867a886ceca9139ce0dcae2405ff29.tar.gz
Adds support for images served via gemini.
Diffstat (limited to 'browsertab.cpp')
-rw-r--r--browsertab.cpp86
1 files changed, 48 insertions, 38 deletions
diff --git a/browsertab.cpp b/browsertab.cpp
index 48c2593..856b3f5 100644
--- a/browsertab.cpp
+++ b/browsertab.cpp
@@ -7,12 +7,15 @@
#include <QMessageBox>
#include <QInputDialog>
#include <QDockWidget>
+#include <QImage>
+#include <QPixmap>
BrowserTab::BrowserTab(MainWindow * mainWindow) :
QWidget(nullptr),
ui(new Ui::BrowserTab),
mainWindow(mainWindow),
- outline()
+ outline(),
+ graphics_scene()
{
ui->setupUi(this);
@@ -28,28 +31,27 @@ BrowserTab::BrowserTab(MainWindow * mainWindow) :
this->updateUI();
- this->ui->textBrowser->document()->setDocumentMargin(55.0);
- this->ui->textBrowser->document()->setDefaultStyleSheet(
+ this->ui->graphics_browser->setScene(&graphics_scene);
+
+ this->ui->text_browser->document()->setDocumentMargin(55.0);
+ this->ui->text_browser->document()->setDefaultStyleSheet(
R"css(
-h1 {
- color: red;
-}
-h2 {
- color: green;
-}
-h3 {
- color: blue;
-}
-span {
- color: lime;
-}
-a {
- color: magenta;
-}
-ul {
- -qt-list-indent: 1;
- type: square;
-}
+ h1 {
+ color: red;
+ }
+ h2 {
+ color: green;
+ }
+ h3 {
+ color: gold;
+ }
+ a {
+ color: blue;
+ }
+ ul {
+ -qt-list-indent: 1;
+ type: square;
+ }
)css");
}
@@ -140,26 +142,40 @@ void BrowserTab::on_gemini_complete(const QByteArray &data, const QString &mime)
{
qDebug() << "Loaded" << data.length() << "bytes of type" << mime;
- bool enable_styles = false;
+
+ this->graphics_scene.clear();
+ this->ui->text_browser->setText("");
+
+ this->ui->text_browser->setVisible(mime.startsWith("text/"));
+ this->ui->graphics_browser->setVisible(mime.startsWith("image/"));
if(mime.startsWith("text/gemini")) {
auto html = translateGeminiToHtml(data, this->outline);
- this->ui->textBrowser->setHtml(html);
+ this->ui->text_browser->setHtml(html);
}
else if(mime.startsWith("text/html")) {
- this->ui->textBrowser->setHtml(QString::fromUtf8(data));
+ this->ui->text_browser->setHtml(QString::fromUtf8(data));
}
#if QT_CONFIG(textmarkdownreader)
else if(mime.startsWith("text/markdown")) {
- this->ui->textBrowser->setMarkdown(QString::fromUtf8(data));
+ this->ui->text_browser->setMarkdown(QString::fromUtf8(data));
}
#endif
else if(mime.startsWith("text/")) {
- this->ui->textBrowser->setText(QString::fromUtf8(data));
+ this->ui->text_browser->setText(QString::fromUtf8(data));
+ }
+ else if(mime.startsWith("image/")) {
+
+ QImage img;
+ if(img.loadFromData(data, nullptr))
+ {
+ this->graphics_scene.addPixmap(QPixmap::fromImage(img));
+ }
}
else {
- this->ui->textBrowser->setText(QString("Unsupported Mime: %1").arg(mime));
+ this->ui->text_browser->setVisible(true);
+ this->ui->text_browser->setText(QString("Unsupported Mime: %1").arg(mime));
}
this->successfully_loaded = true;
@@ -319,7 +335,7 @@ void BrowserTab::on_fav_button_clicked()
}
-void BrowserTab::on_textBrowser_anchorClicked(const QUrl &url)
+void BrowserTab::on_text_browser_anchorClicked(const QUrl &url)
{
qDebug() << url;
@@ -335,17 +351,17 @@ void BrowserTab::on_textBrowser_anchorClicked(const QUrl &url)
}
}
-void BrowserTab::on_textBrowser_backwardAvailable(bool arg1)
+void BrowserTab::on_text_browser_backwardAvailable(bool arg1)
{
this->ui->back_button->setEnabled(arg1);
}
-void BrowserTab::on_textBrowser_forwardAvailable(bool arg1)
+void BrowserTab::on_text_browser_forwardAvailable(bool arg1)
{
this->ui->forward_button->setEnabled(arg1);
}
-void BrowserTab::on_textBrowser_highlighted(const QUrl &url)
+void BrowserTab::on_text_browser_highlighted(const QUrl &url)
{
QUrl real_url = url;
if(real_url.isRelative())
@@ -483,9 +499,3 @@ QByteArray BrowserTab::translateGeminiToHtml(const QByteArray &input, DocumentOu
}
-#include <QTextBlock>
-
-void BrowserTab::on_textEdit_textChanged()
-{
- this->ui->textBrowser->document()->setDefaultStyleSheet(this->ui->textEdit->toPlainText());
-}