Add touchpad settings

This commit is contained in:
Ian Douglas Scott 2023-09-06 14:44:50 -07:00
parent 69b5c3148f
commit cafe56d86c
4 changed files with 225 additions and 61 deletions

View file

@ -9,7 +9,6 @@ use slotmap::SlotMap;
use super::Message;
// XXX
pub fn default_primary_button() -> cosmic::widget::segmented_button::SingleSelectModel {
let mut model = cosmic::widget::segmented_button::SingleSelectModel::builder()
.insert(|b| b.text(fl!("mouse", "primary-button-left")))
@ -54,13 +53,11 @@ fn mouse() -> Section<crate::pages::Message> {
let input = binder.page::<super::Page>().expect("input page not found");
// TODO need something more custom
settings::view_section(&section.title)
// TODO
.add(settings::item(
&descriptions[0],
cosmic::widget::segmented_selection::horizontal(&input.primary_button)
.on_activate(Message::PrimaryButtonSelected),
.on_activate(|x| Message::PrimaryButtonSelected(x, false)),
))
.add(
settings::item::builder(&descriptions[1]).control(widget::slider(
@ -72,7 +69,7 @@ fn mouse() -> Section<crate::pages::Message> {
.map_or(0.0, |x| x.speed)
+ 1.0)
* 50.0,
|value| Message::SetMouseSpeed((value / 50.0) - 1.0),
|value| Message::SetMouseSpeed((value / 50.0) - 1.0, false),
)),
)
.add(
@ -84,13 +81,15 @@ fn mouse() -> Section<crate::pages::Message> {
.acceleration
.as_ref()
.map_or(true, |x| x.profile == Some(AccelProfile::Adaptive)),
Message::SetAcceleration,
|x| Message::SetAcceleration(x, false),
),
)
.add(
settings::item::builder(&descriptions[4])
.description(&descriptions[5])
.control(widget::slider(0..=100, 0, Message::SetDoubleClickSpeed)),
.control(widget::slider(0..=100, 0, |x| {
Message::SetDoubleClickSpeed(x, false)
})),
)
.apply(Element::from)
.map(crate::pages::Message::Input)
@ -126,7 +125,7 @@ fn scrolling() -> Section<crate::pages::Message> {
.log(2.)
* 10.0
+ 50.0,
|value| Message::SetScrollFactor(2f64.powf((value - 50.0) / 10.0)),
|value| Message::SetScrollFactor(2f64.powf((value - 50.0) / 10.0), false),
),
))
.add(
@ -139,7 +138,7 @@ fn scrolling() -> Section<crate::pages::Message> {
.as_ref()
.and_then(|x| x.natural_scroll)
.unwrap_or(false),
Message::SetNaturalScroll,
|x| Message::SetNaturalScroll(x, false),
),
)
.apply(Element::from)