aboutsummaryrefslogtreecommitdiff
path: root/src/browsertab.cpp
diff options
context:
space:
mode:
authorFelix (xq) Queißner <git@mq32.de>2020-06-27 01:38:16 +0200
committerFelix (xq) Queißner <git@mq32.de>2020-06-27 01:38:16 +0200
commit4ad32f09d68dd7b589e1f44ccc77766a133a6761 (patch)
tree950c3587118ce94a4b02ab4c05ce6738ef76316f /src/browsertab.cpp
parent8a1961707348c85b6564a18a4c0c3e1d8e34b65c (diff)
downloadkristall-4ad32f09d68dd7b589e1f44ccc77766a133a6761.tar.gz
Implements Ctrl-F search, fully featured (F3, Shift-F3, Ctrl-F, Escape)
Diffstat (limited to 'src/browsertab.cpp')
-rw-r--r--src/browsertab.cpp64
1 files changed, 64 insertions, 0 deletions
diff --git a/src/browsertab.cpp b/src/browsertab.cpp
index 0f0d8b2..c47858f 100644
--- a/src/browsertab.cpp
+++ b/src/browsertab.cpp
@@ -36,6 +36,8 @@
#include <QImageReader>
#include <QClipboard>
#include <QDesktopServices>
+#include <QShortcut>
+#include <QKeySequence>
#include <QGraphicsPixmapItem>
#include <QGraphicsTextItem>
@@ -60,6 +62,8 @@ BrowserTab::BrowserTab(MainWindow *mainWindow) : QWidget(nullptr),
this->updateUI();
+ this->ui->search_bar->setVisible(false);
+
this->ui->media_browser->setVisible(false);
this->ui->graphics_browser->setVisible(false);
this->ui->text_browser->setVisible(true);
@@ -78,6 +82,25 @@ BrowserTab::BrowserTab(MainWindow *mainWindow) : QWidget(nullptr),
this->network_timeout_timer.setTimerType(Qt::PreciseTimer);
connect(&this->network_timeout_timer, &QTimer::timeout, this, &BrowserTab::on_networkTimeout);
+
+
+
+ {
+ QShortcut * sc = new QShortcut(QKeySequence("Ctrl+F"), this);
+ connect(sc, &QShortcut::activated, this, &BrowserTab::on_focusSearchbar);
+ }
+ {
+ QShortcut * sc = new QShortcut(QKeySequence("F3"), this);
+ connect(sc, &QShortcut::activated, this, &BrowserTab::on_search_next_clicked);
+ }
+ {
+ QShortcut * sc = new QShortcut(QKeySequence("Shift+F3"), this);
+ connect(sc, &QShortcut::activated, this, &BrowserTab::on_search_previous_clicked);
+ }
+ {
+ QShortcut * sc = new QShortcut(QKeySequence("Escape"), this->ui->search_bar);
+ connect(sc, &QShortcut::activated, this, &BrowserTab::on_close_search_clicked);
+ }
}
BrowserTab::~BrowserTab()
@@ -173,6 +196,16 @@ void BrowserTab::focusUrlBar()
this->ui->url_bar->selectAll();
}
+void BrowserTab::focusSearchBar()
+{
+ if(not this->ui->search_bar->isVisible()) {
+ this->ui->search_box->setText("");
+ }
+ this->ui->search_bar->setVisible(true);
+ this->ui->search_box->setFocus();
+ this->ui->search_box->selectAll();
+}
+
void BrowserTab::on_url_bar_returnPressed()
{
QUrl url { this->ui->url_bar->text().trimmed() };
@@ -244,6 +277,11 @@ void BrowserTab::on_networkTimeout()
on_networkError(ProtocolHandler::Timeout, "The server didn't respond in time.");
}
+void BrowserTab::on_focusSearchbar()
+{
+ this->focusSearchBar();
+}
+
void BrowserTab::on_certificateRequired(const QString &reason)
{
this->network_timeout_timer.stop();
@@ -1010,3 +1048,29 @@ void BrowserTab::on_enable_client_cert_button_clicked(bool checked)
resetClientCertificate();
}
}
+
+void BrowserTab::on_search_box_textChanged(const QString &arg1)
+{
+ this->ui->text_browser->setTextCursor(QTextCursor { this->ui->text_browser->document() });
+ this->ui->text_browser->find(arg1);
+}
+
+void BrowserTab::on_search_box_returnPressed()
+{
+ this->ui->text_browser->find(this->ui->search_box->text());
+}
+
+void BrowserTab::on_search_next_clicked()
+{
+ this->ui->text_browser->find(this->ui->search_box->text());
+}
+
+void BrowserTab::on_search_previous_clicked()
+{
+ this->ui->text_browser->find(this->ui->search_box->text(), QTextDocument::FindBackward);
+}
+
+void BrowserTab::on_close_search_clicked()
+{
+ this->ui->search_bar->setVisible(false);
+}