feat: settings as separate window

This commit is contained in:
2026-08-26 09:17:28 +05:00
parent fc5a7638bc
commit 9534c6b1e3
4 changed files with 277 additions and 262 deletions
+12 -29
View File
@@ -2,11 +2,12 @@ import { Button, CheckBox, ListView } from "std-widgets.slint";
import { BrowserItem } from "./browser_item.slint";
import { Header } from "./header.slint";
import { Footer } from "./footer.slint";
import { SettingsView } from "./settings.slint";
import { BrowserConfig, RememberedEntry } from "./types.slint";
import { BrowserConfig } from "./types.slint";
import { Theme } from "theme.slint";
export { Theme }
export { SettingsWindow } from "./settings.slint";
export { RememberedEntry } from "./types.slint";
component CheckRow inherits Rectangle {
in property <string> label;
@@ -63,17 +64,11 @@ export component MainWindow inherits Window {
in-out property <bool> remember-choice: false;
in-out property <bool> always-ask: true;
in property <int> selected-index: 0;
in property <[RememberedEntry]> remembered-list: [];
in-out property <bool> settings-open: false;
callback launch-browser(BrowserConfig);
callback toggle-remember(bool);
callback toggle-always-ask(bool);
callback settings-clicked();
callback settings-closed();
callback remove-browser(string);
callback remove-remembered(string);
callback redetect-browsers();
callback open-clicked();
callback request-drag();
callback esc-pressed();
@@ -83,9 +78,10 @@ export component MainWindow inherits Window {
width: 488px;
height: 800px;
default-font-family: "Segoe UI";
FocusScope {
init => { self.focus(); }
scope := FocusScope {
init => {
self.focus();
}
key-pressed(event) => {
if (event.text == Key.Escape) {
root.esc-pressed();
@@ -96,6 +92,10 @@ export component MainWindow inherits Window {
}
}
callback restore-focus();
restore-focus => {
scope.focus();
}
VerticalLayout {
alignment: start;
width: 488px;
@@ -113,24 +113,7 @@ export component MainWindow inherits Window {
border-width: 1px;
border-color: Theme.border-main;
if root.settings-open: SettingsView {
browsers: root.browser-model;
remembered: root.remembered-list;
back => {
root.settings-closed();
}
remove-browser(name) => {
root.remove-browser(name);
}
remove-remembered(domain) => {
root.remove-remembered(domain);
}
redetect => {
root.redetect-browsers();
}
}
if !root.settings-open: VerticalLayout {
VerticalLayout {
Header {
url: current-url;