From ee271a8c26d68613d984ebcd07f5ccec3e8f579d Mon Sep 17 00:00:00 2001 From: Tsuki Date: Mon, 26 Feb 2024 18:38:17 +0800 Subject: [PATCH] sync --- src/components/setting_item/mod.rs | 17 ++++++----------- src/config.rs | 14 ++++++++------ 2 files changed, 14 insertions(+), 17 deletions(-) diff --git a/src/components/setting_item/mod.rs b/src/components/setting_item/mod.rs index b503fc5..3d9f487 100644 --- a/src/components/setting_item/mod.rs +++ b/src/components/setting_item/mod.rs @@ -4,6 +4,8 @@ use gtk::{StringList, Widget}; use relm4::{factory::FactoryView, gtk, prelude::*, FactorySender, RelmObjectExt}; use std::cell::{Cell, RefCell}; use std::rc::Rc; +use adw::glib::gobject_ffi::GValue; +use adw::glib::GString; #[derive(Debug)] pub enum Msg {} @@ -12,7 +14,7 @@ pub enum Msg {} pub enum OutputMsg {} pub enum SettingType { - Select(Vec, Option>), + Select(Vec<&'static str>, Option>), Action, Entry( Option, @@ -37,18 +39,11 @@ impl SettingItem { SettingType::Select(selects, selected) => { let w = adw::ComboRow::builder().title(&self.title).build(); if let Some(selected) = selected.take() { - w.connect_selected_item_notify(move |s| { - // println!("{}", text); - // selected.set(text.to_string()); + w.connect_selected_notify(move |s| { + selected(s.selected() as usize); }); } - let model = StringList::new( - selects - .iter() - .map(|s| s.as_str()) - .collect::>() - .as_ref(), - ); + let model = StringList::new(selects.as_ref()); w.set_model(Some(&model)); w.upcast::() } diff --git a/src/config.rs b/src/config.rs index 4b7121d..8796866 100644 --- a/src/config.rs +++ b/src/config.rs @@ -12,6 +12,8 @@ lazy_static! { r"^\s*(0|[1-9]\d*)(\.\d+)?\s*,\s*(0|[1-9]\d*)(\.\d+)?\s*,\s*(0|[1-9]\d*)(\.\d+)?\s*$" ) .unwrap(); + + static ref RADAR_TYPES: Vec<&'static str> = vec!["X", "S", "C"]; } #[derive(Clone, Debug, Default, PartialOrd, PartialEq)] @@ -71,8 +73,8 @@ macro_rules! to_setting { impl RadarConfig { pub fn to_settings(config: Rc>) -> Vec { let mut settings = Vec::new(); - let a = vec!["a".to_string()]; - let b = vec!["b".to_string()]; + let a = vec!["a"]; + let b = vec!["b"]; to_setting!( settings, config, @@ -86,12 +88,12 @@ impl RadarConfig { } ), ( - SettingType::Entry, + SettingType::Select, "Type", - [None; None], - move |x: &str, config: Rc>| { + [RADAR_TYPES.clone()], + |x: usize, config: Rc>| { let mut config = config.borrow_mut(); - config._type = x.to_string(); + config._type = (&RADAR_TYPES[x]).to_string(); } ), (