From 4805c389a7650d85064a3e959936defb8e16968f Mon Sep 17 00:00:00 2001 From: Mike Skec Date: Mon, 15 Feb 2021 16:38:45 +1100 Subject: Added search engine preference --- src/browsertab.cpp | 15 ++++++-- src/dialogs/settingsdialog.cpp | 11 ++++++ src/dialogs/settingsdialog.hpp | 2 ++ src/dialogs/settingsdialog.ui | 77 ++++++++++++++++++++++++++---------------- src/kristall.hpp | 1 + src/main.cpp | 2 ++ 6 files changed, 77 insertions(+), 31 deletions(-) (limited to 'src') diff --git a/src/browsertab.cpp b/src/browsertab.cpp index 57d04b1..20289ae 100644 --- a/src/browsertab.cpp +++ b/src/browsertab.cpp @@ -304,8 +304,19 @@ void BrowserTab::on_url_bar_returnPressed() else { // Use the text as a search query. - static const QString search_engine = "gemini://gus.guru/search?%1"; - url = QUrl{QString(search_engine).arg(this->ui->url_bar->text())}; + if (kristall::options.search_engine.isEmpty() || + !kristall::options.search_engine.contains("%1")) + { + QMessageBox::warning(this, + "Kristall", + "No search engine is configured.\n" + "Please configure one in the settings to allow searching via the URL bar.\n\n" + "See the Help menu for additional information." + ); + return; + } + url = QUrl{QString(kristall::options.search_engine) + .arg(this->ui->url_bar->text())}; } } diff --git a/src/dialogs/settingsdialog.cpp b/src/dialogs/settingsdialog.cpp index 252c7a6..c164171 100644 --- a/src/dialogs/settingsdialog.cpp +++ b/src/dialogs/settingsdialog.cpp @@ -218,6 +218,12 @@ void SettingsDialog::setOptions(const GenericSettings &options) this->ui->start_page->setText(this->current_options.start_page); + this->ui->search_engine->clear(); + this->ui->search_engine->setEditText(this->current_options.search_engine); + this->ui->search_engine->addItem("gemini://geminispace.info/search?%1"); + this->ui->search_engine->addItem("gemini://gus.guru/search?%1"); + this->ui->search_engine->addItem("gemini://houston.coder.town/search?%1"); + if(this->current_options.gophermap_display == GenericSettings::PlainText) { this->ui->gophermap_text->setChecked(true); } else { @@ -670,6 +676,11 @@ void SettingsDialog::on_start_page_textChanged(const QString &start_page) this->current_options.start_page = start_page; } +void SettingsDialog::on_search_engine_currentTextChanged(const QString &search_engine) +{ + this->current_options.search_engine = search_engine; +} + void SettingsDialog::on_ui_theme_currentIndexChanged(int index) { this->current_options.theme = Theme(this->ui->ui_theme->itemData(index).toInt()); diff --git a/src/dialogs/settingsdialog.hpp b/src/dialogs/settingsdialog.hpp index d515242..748d118 100644 --- a/src/dialogs/settingsdialog.hpp +++ b/src/dialogs/settingsdialog.hpp @@ -112,6 +112,8 @@ private slots: void on_start_page_textChanged(const QString &arg1); + void on_search_engine_currentTextChanged(const QString &arg1); + void on_ui_theme_currentIndexChanged(int index); void on_ui_density_currentIndexChanged(int index); diff --git a/src/dialogs/settingsdialog.ui b/src/dialogs/settingsdialog.ui index a88285e..058c64d 100644 --- a/src/dialogs/settingsdialog.ui +++ b/src/dialogs/settingsdialog.ui @@ -52,6 +52,7 @@ + @@ -67,13 +68,30 @@ + + + Search engine: + + + + + + + true + + + Enter URL with '%1' in place of query + + + + Enabled Protocols - + @@ -118,14 +136,14 @@ - + Text Rendering - + @@ -152,14 +170,14 @@ - + Enable text highlights - + @@ -186,14 +204,14 @@ - + Gopher Map - + @@ -220,14 +238,14 @@ - + Unknown Scheme - + @@ -251,14 +269,14 @@ - + Hidden files in file:// directories - + @@ -282,14 +300,14 @@ - + URL bar highlights - + @@ -313,7 +331,7 @@ - + Use typographer's quotes @@ -323,7 +341,7 @@ - + @@ -347,38 +365,38 @@ - + Max. Number of Redirections - + 5 - + Redirection Handling - + - + Network Timeout - + ms @@ -391,14 +409,14 @@ - + Additional toolbar buttons - + @@ -416,7 +434,7 @@ - + Total cache size limit @@ -426,7 +444,7 @@ - + KiB @@ -440,7 +458,7 @@ - + Cached item size threshold @@ -450,7 +468,7 @@ - + KiB @@ -464,7 +482,7 @@ - + Cached item life @@ -474,7 +492,7 @@ - + minutes @@ -1319,6 +1337,7 @@ ui_theme ui_density start_page + search_engine enable_gemini enable_gopher enable_finger diff --git a/src/kristall.hpp b/src/kristall.hpp index 6dcf3ee..08b9d0f 100644 --- a/src/kristall.hpp +++ b/src/kristall.hpp @@ -51,6 +51,7 @@ struct GenericSettings }; QString start_page = "about:favourites"; + QString search_engine = "gemini://geminispace.info/search?%1"; Theme theme = Theme::light; UIDensity ui_density = UIDensity::compact; TextDisplay text_display = FormattedText; diff --git a/src/main.cpp b/src/main.cpp index 05bc5e7..09975bb 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -331,6 +331,7 @@ void GenericSettings::load(QSettings &settings) { network_timeout = settings.value("network_timeout", 5000).toInt(); start_page = settings.value("start_page", "about:favourites").toString(); + search_engine = settings.value("search_engine", "gemini://geminispace.info/search?%1").toString(); if(settings.value("text_display", "fancy").toString() == "plain") text_display = PlainText; @@ -380,6 +381,7 @@ void GenericSettings::load(QSettings &settings) void GenericSettings::save(QSettings &settings) const { settings.setValue("start_page", this->start_page); + settings.setValue("search_engine", this->search_engine); settings.setValue("text_display", (text_display == FormattedText) ? "fancy" : "plain"); settings.setValue("text_decoration", enable_text_decoration); QString theme_name = "os_default"; -- cgit v1.2.3