feat: settings as separate window
This commit is contained in:
+12
-29
@@ -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;
|
||||
|
||||
Reference in New Issue
Block a user