diff --git a/Ladybird/SettingsDialog.cpp b/Ladybird/SettingsDialog.cpp index 8ffae27c04..f36542d839 100644 --- a/Ladybird/SettingsDialog.cpp +++ b/Ladybird/SettingsDialog.cpp @@ -5,15 +5,44 @@ */ #include "SettingsDialog.h" +#include "Settings.h" +#include +#include + +extern Browser::Settings* s_settings; SettingsDialog::SettingsDialog(QMainWindow* window) : m_window(window) { - m_layout = new QBoxLayout(QBoxLayout::Direction::TopToBottom, this); + m_layout = new QFormLayout; + m_homepage = new QLineEdit; + m_ok_button = new QPushButton("&Save"); + + m_layout->addWidget(new QLabel("Homepage")); + m_layout->addWidget(m_homepage); + m_layout->addWidget(m_ok_button); + + m_homepage->setText(s_settings->homepage()); + + QObject::connect(m_ok_button, &QPushButton::released, this, [this] { + close(); + }); setWindowTitle("Settings"); - resize(340, 400); + setFixedWidth(300); setLayout(m_layout); show(); setFocus(); } + +void SettingsDialog::closeEvent(QCloseEvent* event) +{ + save(); + event->accept(); +} + +void SettingsDialog::save() +{ + // FIXME: Validate data. + s_settings->set_homepage(m_homepage->text()); +} diff --git a/Ladybird/SettingsDialog.h b/Ladybird/SettingsDialog.h index d303202d06..710f2b84bc 100644 --- a/Ladybird/SettingsDialog.h +++ b/Ladybird/SettingsDialog.h @@ -4,9 +4,11 @@ * SPDX-License-Identifier: BSD-2-Clause */ -#include #include +#include +#include #include +#include #pragma once @@ -15,7 +17,13 @@ class SettingsDialog : public QDialog { public: explicit SettingsDialog(QMainWindow* window); + void save(); + + virtual void closeEvent(QCloseEvent*) override; + private: - QBoxLayout* m_layout; + QFormLayout* m_layout; + QPushButton* m_ok_button { nullptr }; + QLineEdit* m_homepage { nullptr }; QMainWindow* m_window { nullptr }; };