diff options
| author | Felix (xq) Queißner <git@mq32.de> | 2020-06-06 23:38:05 +0200 |
|---|---|---|
| committer | Felix (xq) Queißner <git@mq32.de> | 2020-06-06 23:38:05 +0200 |
| commit | 6887cd80266a8041f31b55b65c142a85239f15a1 (patch) | |
| tree | a3ceabb995fc31b6e77eb23cc2dad5d3bc4846fb /src | |
| parent | 3aed883402dc8da829fc304434c5efd0570cbb97 (diff) | |
| download | kristall-6887cd80266a8041f31b55b65c142a85239f15a1.tar.gz | |
Adds rendering of about:blank and about:favourites.
Diffstat (limited to 'src')
| -rw-r--r-- | src/browsertab.cpp | 45 | ||||
| -rw-r--r-- | src/favouritecollection.hpp | 4 | ||||
| -rw-r--r-- | src/main.cpp | 5 | ||||
| -rw-r--r-- | src/mainwindow.cpp | 32 | ||||
| -rw-r--r-- | src/mainwindow.hpp | 2 | ||||
| -rw-r--r-- | src/settingsdialog.cpp | 10 | ||||
| -rw-r--r-- | src/settingsdialog.hpp | 4 | ||||
| -rw-r--r-- | src/settingsdialog.ui | 26 |
8 files changed, 105 insertions, 23 deletions
diff --git a/src/browsertab.cpp b/src/browsertab.cpp index 6a4bf69..5f58704 100644 --- a/src/browsertab.cpp +++ b/src/browsertab.cpp @@ -51,10 +51,11 @@ BrowserTab::~BrowserTab() void BrowserTab::navigateTo(const QUrl &url, PushToHistory mode) { // TODO: Implement about:// scheme! - if(url.scheme() != "gemini") { + if(url.scheme() != "gemini" and url.scheme() != "about") { QMessageBox::warning(this, "Kristall", "Unsupported uri scheme: " + url.scheme()); return; } + this->current_location = url; this->ui->url_bar->setText(url.toString()); @@ -63,11 +64,44 @@ void BrowserTab::navigateTo(const QUrl &url, PushToHistory mode) return; } - this->redirection_count = 0; - this->successfully_loaded = false; - this->push_to_history_after_load = (mode == PushAfterSuccess); + if(url.scheme() == "gemini") + { + this->redirection_count = 0; + this->successfully_loaded = false; + this->push_to_history_after_load = (mode == PushAfterSuccess); + gemini_client.startRequest(url); + } + else if(url.scheme() == "about") + { + this->redirection_count = 0; + this->push_to_history_after_load = false; + + if(mode == PushAfterSuccess) + mode = PushImmediate; + if(url.path() == "blank") + { + this->on_gemini_complete("", "text/gemini"); + } + else if(url.path() == "favourites") + { + QByteArray document; + + document.append("# Favourites\n"); + document.append("\n"); + + for(auto const & fav : this->mainWindow->favourites.getAll()) + { + document.append("=> " + fav.toString().toUtf8() + "\n"); + } + + this->on_gemini_complete(document, "text/gemini"); + } + else + { + QMessageBox::warning(this, "Kristall", "Unknown location: " + url.path()); + } + } - gemini_client.startRequest(url); switch(mode) { @@ -135,7 +169,6 @@ void BrowserTab::on_gemini_complete(const QByteArray &data, const QString &mime) { qDebug() << "Loaded" << data.length() << "bytes of type" << mime; - this->graphics_scene.clear(); this->ui->text_browser->setText(""); diff --git a/src/favouritecollection.hpp b/src/favouritecollection.hpp index 73afa1f..043fdf2 100644 --- a/src/favouritecollection.hpp +++ b/src/favouritecollection.hpp @@ -27,6 +27,10 @@ public: bool load(QString const & fileName); bool load(QSettings & settings); + QVector<QUrl> getAll() const { + return this->items; + } + public: int rowCount(const QModelIndex &parent = QModelIndex()) const override; diff --git a/src/main.cpp b/src/main.cpp index 31cc7da..5063694 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -9,9 +9,8 @@ int main(int argc, char *argv[]) QApplication a(argc, argv); MainWindow w; - - - w.addNewTab(true, QUrl("gemini://gemini.circumlunar.space/")); + // w.addNewTab(true, QUrl("gemini://gemini.circumlunar.space/")); + w.addEmptyTab(true, true); w.show(); return a.exec(); diff --git a/src/mainwindow.cpp b/src/mainwindow.cpp index 19dd922..00f3311 100644 --- a/src/mainwindow.cpp +++ b/src/mainwindow.cpp @@ -14,6 +14,10 @@ MainWindow::MainWindow(QWidget *parent) : ui(new Ui::MainWindow), url_status(new QLabel()) { + if(not this->settings.contains("start_page")) { + this->settings.setValue("start_page", "about:favourites"); + } + ui->setupUi(this); this->statusBar()->addWidget(this->url_status); @@ -23,9 +27,10 @@ MainWindow::MainWindow(QWidget *parent) : ui->favourites_view->setModel(&favourites); - // this->ui->history_window->setVisible(false); + this->ui->outline_window->setVisible(false); + this->ui->history_window->setVisible(false); this->ui->clientcert_window->setVisible(false); - this->ui->bookmarks_window->setVisible(true); + this->ui->bookmarks_window->setVisible(false); for(QDockWidget * dock : findChildren<QDockWidget *>()) { @@ -64,7 +69,7 @@ MainWindow::~MainWindow() delete ui; } -BrowserTab * MainWindow::addEmptyTab(bool focus_new) +BrowserTab * MainWindow::addEmptyTab(bool focus_new, bool load_default) { BrowserTab * tab = new BrowserTab(this); @@ -76,12 +81,16 @@ BrowserTab * MainWindow::addEmptyTab(bool focus_new) this->ui->browser_tabs->setCurrentIndex(index); } + if(load_default) { + tab->navigateTo(QUrl(this->settings.value("start_page").toString()), BrowserTab::DontPush); + } + return tab; } BrowserTab * MainWindow::addNewTab(bool focus_new, QUrl const & url) { - auto tab = addEmptyTab(focus_new); + auto tab = addEmptyTab(focus_new, false); tab->navigateTo(url, BrowserTab::PushImmediate); return tab; } @@ -193,15 +202,22 @@ void MainWindow::on_actionSettings_triggered() dialog.setGeminiStyle(this->current_style); - if(dialog.exec() == QDialog::Accepted) { - this->current_style = dialog.geminiStyle(); - this->saveSettings(); + dialog.setStartPage(this->settings.value("start_page").toString()); + + if(dialog.exec() != QDialog::Accepted) + return; + + if(auto url = dialog.startPage(); url.isValid()) { + this->settings.setValue("start_page", url.toString()); } + + this->current_style = dialog.geminiStyle(); + this->saveSettings(); } void MainWindow::on_actionNew_Tab_triggered() { - this->addEmptyTab(true); + this->addEmptyTab(true, true); } void MainWindow::on_actionQuit_triggered() diff --git a/src/mainwindow.hpp b/src/mainwindow.hpp index 41b6e2c..95b096d 100644 --- a/src/mainwindow.hpp +++ b/src/mainwindow.hpp @@ -23,7 +23,7 @@ public: MainWindow(QWidget *parent = nullptr); ~MainWindow(); - BrowserTab * addEmptyTab(bool focus_new); + BrowserTab * addEmptyTab(bool focus_new, bool load_default); BrowserTab * addNewTab(bool focus_new, QUrl const & url); void setUrlPreview(QUrl const & url); diff --git a/src/settingsdialog.cpp b/src/settingsdialog.cpp index 2078e7c..33042d5 100644 --- a/src/settingsdialog.cpp +++ b/src/settingsdialog.cpp @@ -89,6 +89,16 @@ void SettingsDialog::setGeminiStyle(const GeminiStyle &style) this->reloadStylePreview(); } +QUrl SettingsDialog::startPage() const +{ + return QUrl(this->ui->start_page->text()); +} + +void SettingsDialog::setStartPage(const QUrl &url) +{ + this->ui->start_page->setText(url.toString()); +} + void SettingsDialog::reloadStylePreview() { auto const document = R"gemini(# H1 Header diff --git a/src/settingsdialog.hpp b/src/settingsdialog.hpp index 5f56961..9df4085 100644 --- a/src/settingsdialog.hpp +++ b/src/settingsdialog.hpp @@ -23,6 +23,10 @@ public: return current_style; } + QUrl startPage() const; + + void setStartPage(QUrl const & url); + private slots: void on_std_change_font_clicked(); diff --git a/src/settingsdialog.ui b/src/settingsdialog.ui index aee3959..b4cc9d6 100644 --- a/src/settingsdialog.ui +++ b/src/settingsdialog.ui @@ -19,6 +19,27 @@ <property name="currentIndex"> <number>0</number> </property> + <widget class="QWidget" name="generic"> + <attribute name="title"> + <string>Generic</string> + </attribute> + <layout class="QFormLayout" name="formLayout"> + <item row="0" column="0"> + <widget class="QLabel" name="label_14"> + <property name="text"> + <string>Start Page:</string> + </property> + </widget> + </item> + <item row="0" column="1"> + <widget class="QLineEdit" name="start_page"> + <property name="placeholderText"> + <string>about://blank</string> + </property> + </widget> + </item> + </layout> + </widget> <widget class="QWidget" name="style_tab"> <attribute name="title"> <string>Style</string> @@ -458,11 +479,6 @@ </item> </layout> </widget> - <widget class="QWidget" name="generic"> - <attribute name="title"> - <string>Generic</string> - </attribute> - </widget> </widget> </item> <item> |
