diff options
author | Vika <vika@fireburn.ru> | 2025-03-30 00:54:24 +0300 |
---|---|---|
committer | Vika <vika@fireburn.ru> | 2025-03-30 00:54:24 +0300 |
commit | 2224f5557a3f2d522a82de27cee73234fa856298 (patch) | |
tree | b0b8cd37a84766502f451ae101c2867d7d62ea55 /src/components/preferences.rs | |
parent | 20f1d890bd87a3d0e72cb150e02433340abb0e9d (diff) | |
download | bowl-2224f5557a3f2d522a82de27cee73234fa856298.tar.zst |
This might be useful if your server is misbehaving, or if you wish to write your HTML by hand. Alternative options (like client-side preprocessing) can also be added in the future using this setting as a framework.
Diffstat (limited to 'src/components/preferences.rs')
-rw-r--r-- | src/components/preferences.rs | 51 |
1 files changed, 50 insertions, 1 deletions
diff --git a/src/components/preferences.rs b/src/components/preferences.rs index 4c2c9fd..67075a2 100644 --- a/src/components/preferences.rs +++ b/src/components/preferences.rs @@ -8,6 +8,52 @@ pub struct Preferences { settings: gio::Settings, } +#[allow(dead_code)] +struct ComposerPreferencesWidgets { + page: adw::PreferencesPage, + general_group: adw::PreferencesGroup, + send_html_directly: adw::SwitchRow, +} + +impl ComposerPreferencesWidgets { + fn new(settings: &gio::Settings) -> Self { + let page = adw::PreferencesPage::builder() + .title(gettext("Post composer")) + .description(gettext("Settings for composing new posts and editing existing ones.")) + .icon_name("editor-symbolic") + .build(); + let general_group = adw::PreferencesGroup::builder() + .title(gettext("General")) + .build(); + let send_html_directly = adw::SwitchRow::new(); + general_group.add(&send_html_directly); + page.add(&general_group); + + let widgets = Self { + page, + general_group, + send_html_directly + }; + + let schema = settings.settings_schema().unwrap(); + + #[expect(clippy::single_element_loop)] + for (row, key, property) in [ + (widgets.send_html_directly.upcast_ref::<adw::PreferencesRow>(), "send-html-directly", "active"), + ] { + let key_data = schema.key(key); + settings.bind(key, row, property) + .get() + .set() + .build(); + row.set_title(&gettext(key_data.summary().unwrap())); + row.set_tooltip_markup(key_data.description().map(gettext).as_deref()); + } + + widgets + } +} + #[cfg(feature = "smart-summary")] #[allow(dead_code)] struct LanguageModelPreferencesWidgets { @@ -28,7 +74,7 @@ struct LanguageModelPreferencesWidgets { impl LanguageModelPreferencesWidgets { fn new(settings: &gio::Settings) -> Self { let page = adw::PreferencesPage::builder() - .title(gettext("Language Models")) + .title(gettext("Language models")) .description(gettext("Settings for the language model integrations.")) .icon_name("brain-augemnted") // sic! .build(); @@ -93,6 +139,7 @@ impl LanguageModelPreferencesWidgets { } pub struct PreferencesWidgets { + composer: ComposerPreferencesWidgets, #[cfg(feature = "smart-summary")] llm: LanguageModelPreferencesWidgets, } @@ -121,9 +168,11 @@ impl Component for Preferences { model.settings.delay(); let widgets = PreferencesWidgets { + composer: ComposerPreferencesWidgets::new(&model.settings), #[cfg(feature = "smart-summary")] llm: LanguageModelPreferencesWidgets::new(&model.settings), }; + root.add(&widgets.composer.page); #[cfg(feature = "smart-summary")] root.add(&widgets.llm.page); |